Tutoriel Linux

Linux 上の SSH エージェント: 鍵を置きっぱなしにせずにパスフレーズを再入力する手間を省く

Débutant2 min de lecture

パスフレーズで保護されたSSHキーを使用している場合、おそらくこの問題はご存知でしょう。セキュリティは確保されますが、接続するたび、または…のたびにパスフレーズを再入力しなければならないため、すぐに面倒になります。 git プル間違った答えは、キーからパスフレーズを削除することです。多くの場合、最良の答えは sshエージェント

sshエージェント セッション中は、ロック解除されたキーがメモリに保持されます。パスフレーズを一度入力すれば、エージェントはSSHリクエストに応答します。便利な機能ですが、2つの注意点があります。1つは、どのエージェントが使用されているかを確認すること、もう1つは、共有マシンや管理サーバーで作業する場合は、使用時間を制限することです。

Tuxは、Linuxサーバーに接続されたセキュアエージェント内でSSHキーを保護します。
ssh-agentは、SSHキーを保護しながら、パスフレーズの再入力を不要にします。

ssh-agentが既に実行されているかどうかを確認してください。

グラフィカルインターフェースを備えた多くのLinuxディストリビューションでは、SSHエージェントが既に実行されています。しかし、純粋なSSH環境、サーバー上、または最小限のセッションでは、必ずしもそうとは限りません。まずは、SSHツールで使用される環境変数を確認してください。

echo "$SSH_AUTH_SOCK"

出力が空の場合、シェルはどのエージェントと通信すればよいかわかりません。既にロードされているキーを確認することもできます。

次のようなメッセージが届いた場合 エージェントには身元情報がありませんエージェントは正しく応答しますが、キーがロードされていません。コマンドがエージェントに接続できないと表示する場合は、エージェントを起動する必要があります。

セッションでssh-agentを起動します

現在のシェルでエージェントを起動するには、以下を使用します。

eval "$(ssh-agent -s)"

このコマンドは、必要な変数を定義します。 SSH_AUTH_SOCK そして SSH_AGENT_PID。なしで 評価エージェントは起動できるものの、シェルが環境を正しく取得できていない。こうした些細なミスは、テストを急ぎすぎると時間を無駄にする原因となる。

この後すぐに確認できます。

echo "$SSH_AUTH_SOCK"

個人用マシンであれば、それで十分な場合が多い。しかし、共有サーバーでは、時間制限を設けずにエージェントを一日中起動したままにしておくのは避けたい。

有効期限付きのSSHキーを追加する

標準USBドライブにデータをロードするには:

ssh-add ~/.ssh/id_ed25519

パスフレーズは一度入力するだけです。その後、このキーを使用する接続はすべてエージェントを経由します。ロードされている内容を確認するには:

ssh-add -l -E sha256

エージェント内のキーの有効期間を制限するには、 -t1時間の例:

ssh-add -t 1h ~/.ssh/id_ed25519

これは、管理用ワークステーションにおける私のお気に入りの設定です。エージェントの利便性はそのままに、ログアウトを忘れた場合でもキーが永久に保持されるわけではありません。

パスフレーズを再入力せずに接続をテストする

キーがロードされたら、通常の接続をテストしてください。

sshユーザー@サーバー

キーがサーバーと一致する場合、SSHはパスフレーズを再度要求しません。失敗した場合は、詳細モードで再度試してください。

ssh -v user@server

どのキーが提示されたか、エージェントが応答したかどうか、そして接続がどこでブロックされたかを確認できます。問題がサーバー側のSSHサービスにある可能性が高い場合は、それに関するガイドも公開しています。 UbuntuでSSHを正常に再起動する そしてもう一つは SSHが応答しなくなった場合は、SSHを再インストールしてください。

エージェントからキーを削除します

特定のキーを削除するには:

ssh-add -d ~/.ssh/id_ed25519

ロードされたすべてのキーを空にするには:

ssh-add -D

エージェントを手動で起動して停止したい場合:

ssh-agent -k

これらのコマンドを、キーファイルの削除と混同しないでください。 ~/.sshここでは、エージェントのメモリからキーを削除するだけです。

SSHエージェントを転送する際は注意が必要です。

エージェント転送は、多くの場合、 ssh -Aこれにより、リモートマシンがローカルエージェントを使用してトラフィックを別のサーバーに転送できるようになります。一部の環境では便利ですが、デフォルトでは使用しないことをお勧めします。

中間サーバーが侵害された場合、秘密鍵はコピーされませんが、セッションが開いている間はエージェントにアクセスできる可能性があります。踏み台ホストや完全に制御できないマシンを使用する場合は、専用キーの使用、有効期間の制限、またはより厳格なSSH設定を選択してください。

作業内容を失わずに長時間セッションを続けるには、 Linux 上の画面 サーバー側でオープンな管理セッションを維持するという別のニーズにも対応します。これは、 sshエージェントしかし、この2つのツールは互いにうまく補完し合っている。

私が守る妥協案

数秒節約するためにSSHキーからパスフレーズを削除しないでください。代わりに、キーを次の場所にロードしてください。 sshエージェントアクティブなキーを確認するには ssh-add -lで期間を制限する ssh-add -t 状況がデリケートな場合は、介入の最後にエージェントを空にする。

のマニュアルページ sshエージェントssh-add そして ssh 利用可能なオプションが詳しく説明されています。すべてを覚える必要はありません。重要なのは、安全な鍵を保持することですが、接続のたびに面倒な作業を強いられることなく使用できる鍵であるべきです。

sudo apt update && sudo apt upgrade