web-dev-qa-db-ja.com

SSH経由でログイン時にssh-agentとssh-addを実行する簡単な方法は?

Ssh経由でサーバーにログインすると、次のコマンドが自動実行されるようにしています。

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

私のsshキーにはパスフレーズがあり、ログインごとに1回入力するだけで問題ありません。

これを.bashrcファイルに入れてみましたが、ssh-agentが新しいbashセッションを開始すると思います。これを.bashrcに入れてからログインしようとすると、スタックしてしまい、「exit」と入力して「Enter passphrace to unlock key」プロンプトを表示する必要があります。

他に何か提案はありますか?

サーバーはUbuntu LTSを実行しています

42
Click Upvote

これを追加してみてください:

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

このようにssh-agentは新しいシェルを起動せず、バックグラウンドで自分自身を起動し、適切な環境変数を設定するためにシェルコマンドを吐き出します。

コメントで述べたように、多分あなたはそうしますnotエージェントをリモートホストで実行したいのですが、作業しているボックスで実行したいので、

ssh -A remote-Host

ローカルsshエージェントのサービスをリモートホストに転送します。

セキュリティ上の理由から、エージェント転送は信頼できるホストが実行しているホストでのみ使用する必要がありますが、完全なエージェントをリモートでいつでも実行するよりも優れています。

56
Tobi Oetiker

Funtooの Keychain を使用する方法もあります。次に、このワンライナーをbashシェルに貼り付けます。

eval $(keychain --eval id_rsa)

これは同じことを行い(sshエージェントを起動するなど)、各サブシェルに対してssh-agentプロセスを実行しません。代わりに、所有している「すでに実行中の」インスタンスを探し、それらに接続します。

2
Erik Aronesty