ページェント(PuTTY SSHキーエージェント)を実行しているラップトップを持っています。システムにsshして画面を起動すると、sshキー転送が正しく機能します。
ただし、その画面セッションから切断してログオフし、後で再接続すると、キー転送が機能しなくなります。これは、再接続すると、新しいsshセッションのキー転送が古いポートとは異なるポートに設定されているためだと思います。
キーを使用して再度転送できるように、個々の画面ウィンドウにエージェント転送に再接続するように教える方法はありますか?
私のソリューションはもう少し堅牢です。これをリモート側の.bash_profileに入れます。
if [ -z "${STY}" -a -t 0 ]; then
reattach () {
if [ -n "${SSH_AUTH_SOCK}" ]; then
ln -snf "${SSH_AUTH_SOCK}" "${HOME}/.ssh/agent-screen"
SSH_AUTH_SOCK="${HOME}/.ssh/agent-screen" export SSH_AUTH_SOCK
fi
exec screen -A -D -RR ${1:+"$@"}
}
fi
次に、reattach
の代わりにscreen
を使用します。これは、「reattach」の代わりに「command screen -A ${1:+"$@"}
」と「screen」を使用して実行できます。
@David Mackintoshによる回答で「エイリアス」ソリューションを使用する場合の問題は、画面で実行されているプロセスがリモート側で同じSSH_AUTH_SOCK値を持つようになったことです。次のシーンを考えてみてください。
SSH_AUTH_SOCK
値を取得し始めるSSH_AUTH_SOCK
値を設定screen
またはtmux
を開始しますscreen
からSSH_AUTH_SOCKを継承するシェルを作成しますSSH_AUTH_SOCK
値を設定SSH_AUTH_SOCK
値があります秘訣は、画面内で実行されているプロセスに新しい値を使用させることです。これを行うには、screen
を呼び出すたびに(新規または再接続されたセッションの場合)、現在のSSH_AUTH_SOCK
へのシンボリックリンクを再ポイントします。
これは実際には次の複製です: 要塞ホストのscreenまたはtmuxでのssh-agentキーのタイムアウト
ソリューション:
.bash_profileに追加します。
echo "export SSH_AUTH_SOCK = $ SSH_AUTH_SOCK">〜/ .ssh/auth_sock
.bashrcに追加します。
エイリアスssh = "source〜/.ssh/auth_sock; ssh"
これは私にとって今のところうまくいくようです。