hoge diary - April 20, 2005

[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 スクリプトですもの.

コメント

○ハシ (posted on: Wed Apr 20 17:33:29 JST 2005)

コレじゃ駄目かね
<a href="http://www.gentoo.org/doc/ja/keychain-guide.xml">http://www.gentoo.org/doc/ja/keychain-guide.xml</a>

pakuchan (posted on: Wed Apr 20 21:00:46 JST 2005)

インストールしてみました.
なかなかかっこいいです.そして,これと同じ作業をシェルスクリプトでやっていた部分があるので,ちょっと助かりました.
ただ,これだけでは全ての問題が片付きません.
詳細は明日の日記で...

pakuchan (posted on: Wed Apr 20 22:15:43 JST 2005)

と思ったら,wrapper script を書くことで解決しそうです.
今までは keychain と同じ作業をシェルスクリプトで書いていたので,楽になりそうです.
(少なくとも,私が考えるソケットファイル検索アルゴリズムより,keychain が用いているアルゴリズムの方がソケットファイルを正しく見つけてくれるでしょう)

名前(何でも可):

テキスト(http:// を含む内容は投稿できません):

トラックバック

トラックバック URI: https://www.pakunet.jp/hoge/trackback/2005042001

トラックバックはありません.


Valid XHTML 1.1! Valid CSS!
© 2004-2009 ぱくちゃん.
Last modified: Thu Nov 01 01:16:40 JST 2007