再ログインせずにssh-agentを再起動する方法

再ログインせずにssh-agentを再起動する方法

誤って私のものを殺しましたssh-agent。再接続せずにどのように再起動できますか?

私はこれを試しましたが、うまくいきません。

$ eval $(ssh-agent -s)
Agent pid 8055

次に、前のターミナルウィンドウでCTRL + SHIFT + Nを使用して新しいGnomeターミナルを開き、次のように入力しました。

$ ssh-add
Could not open a connection to your authentication agent.

ただし、最初のGnome端末で新しいGnome端末を開き、次のように入力すると:

$ gnome-terminal &

これにより、この新しいウィンドウでに接続できますssh-agent

ssh-agentPC/サーバーに再接続せずに、すべてのGnome端末を「見る」ことはできますか?

答え1

思ったように動作しません。 ssh-agentは設定を上書きします。

この問題を解決するには——

エージェントを探す:

eval "$(ssh-agent -s)"

エージェントID 9546

PID終了:

kill -9 9546

それでは、あなたが確認してください。

ssh [email protected]

ssh [email protected]

今は大丈夫でしょう。

答え2

killall ssh-agent; eval "$(ssh-agent)"

答え3

次のコマンドを使用して再起動してみてください。

sudo service ssh restart

プライベート/パブリックRSA SSHキーは、それぞれ~/.ssh/id_rsaおよび~/.ssh/id_rsa.pubにあります。公開鍵を別のコンピュータに送信して、公開鍵認証を介してそのコンピュータに接続できます。これは、次のようにssh-copy-idを介して実行できます。

ssh-copy-id username@host

あるいは、公開鍵(id_rsa.pub)をサーバーの/home/username/.ssh/authorized_keysファイルに追加することもできます。これはデフォルトでssh-copy-idが実行するアクションです。

答え4

問題は、元のバージョンがssh-agentおそらくGUIセッション起動スクリプトによって開始され、SSH_AUTH_SOCK当時生成された環境変数がデスクトップ環境のプロセスによって継承されたことです。

GUIを介して開始された新しいプロセスはすべて古い値を継承し、実行中のすべてのGnomeターミナルプロセス(およびその中のシェル)はすでに古い値を継承します。SSH_AUTH_SOCK以前の値を持つすべてのプロセスに新しい値をプッシュし、実行中のすべてのクライアントプロセスをトリガーしてssh新しい値を使用するように独自に再構成する必要があります。これを行うためのメカニズムはありません。

代わりにできることは、古いSSH_AUTH_SOCK値と新しい値を書き留めておくことです。古いプロキシソケットの代わりに新しいソケットを指すシンボリックリンクを作成します。

言い換えれば:

ln -sf <new SSH_AUTH_SOCK value> <old SSH_AUTH_SOCK value>

新しいエージェントはまだ起動されたシェルの子プロセスであり、そのシェルが終了すると終了する可能性があることに注意してください。

関連情報