当我运行 Gnome 时,如果身份未加载,ssh-agent 将在 slogin/ssh 上运行 ssh-add。我想在远程 shell 上模仿这种行为,但我发现的所有内容都建议在登录时运行 ssh-add。如果我随后在远程 shell 上运行 slogin/ssh,我只想运行 ssh-add,而不是每次登录时。
我通过 bash shell 找到了一个解决方案。
添加到 .bashrc:
check-ssh-add() {
if [ "$DESKTOP_SESSION" == "" ]; then
if [[ `ssh-add -l` != *id_?sa* ]]; then
ssh-add -t 5h ## 5 hour ssh-agent expiration
fi
fi
}
slogin() {
check-ssh-add
/usr/bin/slogin $@
}
ssh() {
check-ssh-add
/usr/bin/ssh $@
}
scp() {
check-ssh-add
/usr/bin/scp $@
}
sftp() {
check-ssh-add
/usr/bin/sftp $@
}
Run Code Online (Sandbox Code Playgroud)
小智 7
其实还有更简单的方法。ssh-add -l如果有键,则返回 true (0),否则返回 false (1),因此您的第一个函数可以替换为:
check-ssh-add() {
if ! ssh-add -l >/dev/null; then
ssh-add -t 5h
fi
}
Run Code Online (Sandbox Code Playgroud)