技術ノート Linux SSH エージェント転送とは何ですか?またその使用方法は何ですか?

SSH エージェント転送とは何ですか?またその使用方法は何ですか?

SSH エージェント転送とは何ですか?またその使用方法は何ですか?

SSH エージェント転送を使用すると、作業中のサーバーに機密データが残ることを心配せずに、プライベートのローカル SSH キーをリモートで使用できます。これは ssh に組み込まれており、セットアップと使用が簡単です。

SSH エージェントとは何ですか?

SSH エージェント転送とは何ですか?またその使用方法は何ですか?

公開 SSH キーはユーザー名や ID のようなもので、誰とでも共有できます。秘密 SSH キーはパスワードのようなもので、コンピュータにローカルに保存されます。しかし、これはパスワードを付箋に保存するようなもので、アクセス権があれば誰でも閲覧できます。そのため、セキュリティのために、SSH はキーを生成するときにパスフレーズを要求し (その手順をスキップしなかったことを祈ります)、そのパスフレーズを使用して秘密キーの暗号化と復号化を行います。

ただし、これは、秘密キーを使用する必要があるたびにパスフレーズを入力する必要があることを意味し、面倒になります。これを管理するために、ほとんどの SSH 実装では、復号化されたキーをメモリ内に保持するエージェントを使用します。つまり、ロックを解除する必要があるのは 1 回だけで、再起動するまでロックが維持されるため、パスフレーズのプロンプトを表示せずにサーバーに安全にログインできます。もちろん、 SSH サーバーがロックダウンされていることを確認する 必要があります。

SSH エージェント転送とは何ですか?またその使用方法は何ですか?

SSH エージェント転送とは何ですか?

SSH エージェントの転送は、さらに深い層に進むようなものです。たとえば、リモート サーバーに接続していて、次のことを行うとします。

 git pull

Github に保存しているコード。 Github に SSH 認証を使用したいと考えていますが、秘密鍵はそのリモート サーバーには置かず、自分のマシンだけに置きたいと考えています。

この問題を解決するには、ローカル SSH エージェントをリモート サーバーに対して開き、接続中にエージェントがユーザーとして機能できるようにします。これにより、たとえ暗号化されていたとしても、秘密鍵はインターネット経由で送信されません。リモート サーバーがローカル SSH エージェントにアクセスして ID を確認できるようにするだけです。

これは次のように動作します。リモート サーバーに Github からコードを取得するよう依頼すると、Github は「あなたは誰ですか?」と尋ねます。サーバーに。通常、サーバーは独自の id_rsa ファイルを参照して回答しますが、代わりに質問をローカル マシンに転送します。ローカル マシンは質問に答え、その応答 (秘密キーは含まれません) をサーバーに送信し、サーバーはそれを Github に転送します。 Github は、ローカル マシンが質問に回答したかどうかには関係なく、質問が回答されたことだけを確認して、接続を許可します。

SSH エージェント転送とは何ですか?またその使用方法は何ですか?

SSH エージェント転送を有効にする方法

Mac および Linux では、SSH エージェント転送が ssh に組み込まれており、 ssh-agent プロセスが自動的に起動されます。あなたがしなければならないことは、キーが ssh-agent に追加されていることを確認し、転送を使用するように ssh を設定することだけです。

ssh-agent にキーを追加する

ユーティリティ ssh-add 使用して、ローカル エージェントにキーを追加できます。秘密鍵が id_rsa に保存されていると仮定すると、次を実行できます。

 ssh-add ~/.ssh/id_rsa

id_rsa を使用する代わりに、キーを手動で貼り付けることもできます。次のコマンドを使用して、キーが適切に追加されていることを確認します。

 ssh-add -L

存在する場合は、キーが吐き出されるはずです。

macOS でキーを追加する

macOS では、代わりに以下を実行する必要があります。

 ssh-add -K ~/.ssh/id_rsa

-K フラグは、キーを macOS キーチェーンに保存します。これは、再起動時にキーを記憶するために必要です。

クライアントの設定で転送を許可する

ローカルマシン上で ~/.ssh/config ファイルを開くか、ファイルが空の場合は新しいファイルを作成します。このサーバーのドメインに対してエージェント転送が確実に有効になるように、新しいルールを設定します。

ホストの例

ForwardAgent はい

example をサーバーのドメイン名または IP アドレスに置き換える必要があります。ホストにワイルドカード * を使用できますが、その場合、接続するすべてのサーバーに秘密キーへのアクセスが転送されることになり、これはおそらく希望どおりではありません。

オペレーティング システムによっては、macOS の場合は /etc/ssh/ssh_config 、Ubuntu の場合は /etc/ssh_config SSH 構成ファイル がある場合があります。これらのファイルは ~/.ssh/config にあるユーザー設定ファイルをオーバーライドする可能性があるため、競合するものがないことを確認してください。 # で始まる行はコメント化されており、効果はありません。

ssh -A user@host を使用して、任意のドメインのエージェント転送を手動で有効にすることもできます。これにより、すべての構成ファイルがバイパスされます。設定を変更せずに簡単に転送する方法が必要な場合は、bash 設定に alias ssh="ssh -A" を追加できますが、これはワイルドカード ホストを使用するのと同じであるため、セキュリティの点からお勧めしません。集中した。

SSH 転送のテスト

手元に 2 つのサーバーがない場合、SSH 転送が機能しているかどうかをテストする最も簡単な方法は、ローカル マシンの公開キーを Github プロファイル に追加し、リモート サーバーから SSH を試行することです。

 ssh git@github.com

機能した場合は、ユーザー名が表示され、サーバーに秘密キーを置くことなく、リポジトリからコードをプッシュおよびプルできるはずです。

SSH エージェント転送とは何ですか?またその使用方法は何ですか?

Windows クライアントの SSH 転送のセットアップ

Windows は Unix オペレーティング システムではないため、セットアップは、そもそも ssh どの程度正確に実行しているかによって異なります。

Windows 上で bash を実行できる Windows 用 Linux サブシステム を使用している場合、コマンド ラインを実行するために Linux ディストリビューションを完全に仮想化するため、セットアップは Linux または macOS の場合と同じになります。

Git Bash を使用している場合、セットアップは Linux の場合と同じですが、シェルを起動するときに ssh-agent を手動で起動する必要があります。これは .bashrc の起動スクリプト を使用して実行できます。

PuTTY を使用している場合、セットアップは非常に簡単です。設定から、[接続] > [SSH] > [認証] に移動し、[エージェント転送を許可する] を有効にします。

同じペインから秘密キー ファイルを追加することもできます。 PuTTY が SSH エージェントを処理するため、構成ファイルをいじる必要はありません。

SSH エージェント転送とは何ですか?またその使用方法は何ですか?

SSH 転送が機能しない場合の対処方法

まず実際に SSH キーを持っていることを確認してください。そうでない場合は、 ssh-keygen を実行すると、秘密鍵が ~/.ssh/id_rsa に、公開鍵が ~/.ssh/id_rsa.pub に配置されます。

SSH キーが通常の認証で適切に機能していることを確認し、 ssh-agent に追加します。 ssh-add 使用してキーを追加できます。

ssh-agent プロセスも実行されている必要があります。 macOS と Linux では、自動的に起動するはずですが、次のコマンドで実行していることを確認できます。

エコー「$SSH_AUTH_SOCK」

正しく設定されている場合は、 Listeners ソケットが返されることがわかります。

ForwardAgent yes が含まれるように構成ファイルが適切に設定されていることを確認し、他の構成ファイルがこの動作を上書きしていないことを確認してください。 SSH が使用している設定ファイルを確認するには、 ssh 冗長モードで実行します。

 ssh -v git@github.com

どの構成ファイルが使用されているかが表示されます。このリストの後ろに表示されるファイルは、前のファイルよりも優先されます。

そしてもちろん、コマンドラインオプションは設定ファイルをオーバーライドします。エージェント転送が ssh -A で機能せず、キーがエージェントで適切に構成されている場合は、何か他の問題が発生しているため、チェーン内のサーバーへの接続を確認する必要があります。

「 SSH エージェント転送とは何ですか?またその使用方法は何ですか?」に関するベスト動画選定!

SSHでLinuxサーバーに接続するときは公開鍵認証を使うと便利だし早い。ぜひ使いこなそう
【SSH】SSH転送(Tera Term, SSHコマンドによる設定)