[Linux] screen + ssh-agent(or ssh -A)
私はずっと screen を使い続けています.そうすると,ssh-agent を併用するときに問題に出くわします.
最初にログインするとき,sshd がエージェントフォワーディング用のソケットファイルを作成します(/tmp/ssh-xxxxxxx/agent.x とします).
sshd はこのファイルを値にもつ環境変数 SSH_AUTH_SOCK を設定し,ログインシェルを起動します.
私のログインシェルは exec screen するので,ここで screen が起動します.
起動した screen はシェルを起動して,ログインセッションが完了します.
このとき,下の図のように,全てのプロセスが持つ環境変数 SSH_AUTH_SOCK は,ログイン時に sshd が設定した値と等しくなっています.
次に screen をデタッチします.2 つある screen のプロセスが切り離され,デタッチが行われます.
そして再びログインします.同じように sshd はソケットファイルを作成し,それを環境変数 SSH_AUTH_SOCK に設定し screen を起動します.が,しかし...!
上の図のような状態になります.つまり,アタッチしても起動していたプロセスの環境変数が勝手に書き換わるわけがないので,私はアタッチ後,新しいエージェントフォワーディング用ソケットファイルを探す必要があります.
と,こういうわけです.keychain を起動してから /usr/bin/ssh を起動する,ラッパーシェルスクリプトを書いてみますか.
おっと... cclub サーバには keychain がないんじゃないかな?
え? コピーすればいい? /usr/bin/keychain は sh スクリプトですもの.
トラックバック
トラックバック URI: https://www.pakunet.jp/hoge/trackback/2005042001
トラックバックはありません.