Gnomeを実行しているとき、IDがロードされていない場合、ssh-agentはslogin / sshに対してssh-addを実行します。リモートシェルでこの動作を模倣したいのですが、ログイン時にssh-addを実行することをお勧めします。ログインするたびではなく、リモートシェルでslogin / sshを実行する場合にのみ、ssh-addを実行します。
Gnomeを実行しているとき、IDがロードされていない場合、ssh-agentはslogin / sshに対してssh-addを実行します。リモートシェルでこの動作を模倣したいのですが、ログイン時にssh-addを実行することをお勧めします。ログインするたびではなく、リモートシェルでslogin / sshを実行する場合にのみ、ssh-addを実行します。
回答:
私はbashシェルを介してこの解決策を考え出しました。
.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 $@
}
«これはインタラクティブセッションです»パートの追加でさらに簡単に
ssh-add -l &> /dev/null || ssh-add ~/.ssh/my_id
OpenSSHの新しいバージョンでは、で有効AddKeysToAgent yes
にすると、最初の使用時にエージェントにキーを追加できます~/.ssh/config
。
(私はこれを/superuser//a/1114257/42546から学びました。さまざまなStackExchangeサイト間で回答を処理するための適切なStackOverflowエチケットが何かはわかりません。)