web-dev-qa-db-ja.com

`ssh-agent bin / bash`とは何ですか?また、毎回` ssh-add`する必要がある理由

再起動するたびに、次のコマンドを実行する必要があります。

ssh-agent /bin/bash
ssh-add ~/.ssh/key_rsa

最初の質問は、なぜ/bin/bashが必要なのか、そしてそれは何のために使われるのかということです。

次に、再起動時に毎回これらのコマンドを実行しても大丈夫ですか、それともこれを.bashrcまたはどこかに配置して、毎回ssh-addする必要がないようにする必要があります。

私はscreenを使用しており、すべての画面タブが異なり、すべての画面タブに対してこれらのコマンドを実行する必要があることに注意してください。

編集:

たとえば、githubにプッシュする必要がある場合は、ssh-add ~/.ssh/github_rsaを実行する必要がありますが、最初にssh-agent /bin/bashを実行しない限りこれは機能しません。

プレーンなssh-agentが機能せず、ssh-agentがすでに実行されているため、これはscreenに関連している可能性がありますが、ssh-agent /bin/bashを実行する必要があります。

4
mattheew

_ssh-agent_は、復号化されたsshキーを_ssh-add_するとメモリにキャッシュするデーモンであるため、sshが認証に使用しようとするたびにパスワードを入力して復号化する必要はありません。メモリにキャッシュされるということは、次に_ssh-agent_が開始されたときに、キーを復号化してエージェントに再度追加する必要があることを意味します。そのため、もう一度_ssh-add_する必要があります。

_/bin/bash_の部分は実際には必要ありません。通常、_ssh-agent_を起動すると、evaledであることが意図されているいくつかの環境変数がstdoutに出力されるため、sshは_ssh-agent_ソケットがどこにあるかを認識します。代わりに、起動時に_ssh-agent_にコマンドを指定すると、代わりに環境変数を設定してそのコマンドが実行されます。

これは、コマンドの実行後に使用しているbashインスタンスが、以前に使用していたもののサブシェルであることを意味します。それを_.bashrc_に追加する際の問題は、新しいシェル_ssh-agent_が開始すると_ssh-agent_が再び実行され、再帰ループが発生することです。代わりに、サブシェルを開始する代わりに、 _ssh-agent_ in your _.bash_profile_ を開始して出力を評価し、ログに記録するたびに手動で_ssh-add_を使用することをお勧めします。に。

もう1つのオプションは、_ssh-agent_を使用する代わりに、 GNOME Keyring のSSHエージェントエミュレーションを使用することです。パスフレーズを保存しない_ssh-agent_とは異なり、GNOMEキーリングはパスフレーズをキーリングのキーに保存するため、手動でキーを追加する必要はありません。

3
kyrias

キーチェーンの使用をお勧めします http://www.funtoo.org/Keychain

キーチェーンは、便利で安全な方法でsshキーとGPGキーを管理するのに役立ちます。これはssh-agentおよびssh-addのフロントエンドとして機能しますが、ログインセッションごとに1つのssh-agentの標準ではなく、システムごとに1つの長時間実行されるssh-agentプロセスを簡単に作成できます。

まず、debian/ubuntuのディストリビューションに従ってインストールします

apt-get install keychain

次に、以下を〜/ .bashrcファイルに追加します。

eval `keychain --eval id_rsa`
2
nwaltham