複数のマシンを管理する場合、同じSSHオプションが履歴にすぐに溜まってしまいます:ユーザー、ポート、秘密鍵、時には中継もあります。ファイル ~/.ssh/config は、この長い行を短い名前に置き換えます。例えば ssh preprod です。
サーバーを変更する必要はありません。この設定はあなたのコンピュータ上に存在し、クライアント OpenSSH に各マシンに接続する方法を指示します。特に、複数の環境が似ているときに、誤った鍵やポートを使用するのを防ぎます。
サーバーごとにエントリを作成する
フォルダが存在しない場合は作成し、設定ファイルを開きます:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/config
次に、各マシンごとにブロックを追加します。ここでは preprod は単なるローカルエイリアスです。アドレス、アカウント、ポート、鍵のパスをあなたの値に置き換えてください。
Host preprod
HostName 192.0.2.44
User admin
Port 2222
IdentityFile ~/.ssh/id_ed25519_preprod
IdentitiesOnly yes
その後、ssh preprod を実行できます。HostName には本当のDNS名またはIPアドレスが含まれ、User にはリモートアカウント、Port にはSSHポートが含まれます。IdentityFile では期待される秘密鍵を選択します。IdentitiesOnly yes を使うと、クライアントはSSHエージェントによって読み込まれるすべての鍵を提案せず、認証を制限するサーバーでの不必要な試行を避けます。
すでに鍵を使用している場合は、まずそれが適切に保護されていることを確認してください。秘密鍵はあなたのコンピュータの他のアカウントから読み取れるべきではありません:
chmod 600 ~/.ssh/id_ed25519_preprod
chmod 600 ~/.ssh/config
Ubuntuでの SSH鍵生成 に関するガイドでは、鍵ペアの作成が説明されています。秘密鍵をサーバーにコピーしてはいけません。~/.ssh/authorized_keys に配置されるのは公開鍵のみです。
ファイルの最後に共通設定を追加する
config ファイルには複数の Host ブロックを含むことができます。OpenSSHクライアントはほとんどのオプションについて、最初に見つけた値を保持します。したがって、最も特定的なサーバーを上に置き、一般的な値を最後に配置しましょう。
Host production
HostName prod.example.net
User deploy
IdentityFile ~/.ssh/id_ed25519_production
IdentitiesOnly yes
Host sauvegarde
HostName backup.example.net
User backup
Port 2201
IdentityFile ~/.ssh/id_ed25519_backup
IdentitiesOnly yes
Host *
ServerAliveInterval 30
ServerAliveCountMax 3
Host * ブロックはすべてのエイリアスに適用されます。本当の共通設定に適しています。ここでは、フリーズした接続を検出するために定期的に信号を送ることです。すべてのサーバーが同じアカウントを使用していない場合は、鍵やユーザーをそこに配置しないでください。
同じルールに従うホストを、Host *.intra のようなパターンでグループ化することもできます。例外はこのブロックの上に置いてください。あいまいなエイリアスまたは早すぎる場所に配置された一般的なルールは、しばしば予期しない挙動を引き起こします。
接続前に設定を確認する
次のコマンドは、エイリアスについて計算された最終設定を表示し、セッションを開くことはありません。変更後に非常に便利です:
ssh -G preprod | grep -E '^(hostname|user|port|identityfile|identitiesonly) '
hostname、user、および port が対象のマシンに一致していることを確認してください。返された identityfile のパスも確認してください。鍵を移動したばかりの場合、SSHはまだ古いファイルを指している可能性があります。
次に、簡単なテストを行います:
ssh preprod
ssh -v preprod
-v オプションは接続のステップと読み込まれた設定ファイルを表示します。この出力をそのままチケットやチャットに公開しないでください:ホスト名、アカウント、ローカルなパスが明らかになる可能性があります。
configファイルが不十分な場合
SSHエイリアスは、オプションの繰り返しを解決します。しかし、それはあなたの鍵を拒否するサーバー、閉じたポート、または変更されたホストフィンガープリントを修正するものではありません。認証が頻繁にパスフレーズを再要求する場合は、ssh-agent を使用し、鍵からパスフレーズを削除するのではなく、そのまま使ってください。
ボスチャンを介して内部サービスに到達するには、ProxyJump を使用して別のエントリを保持し、別々にテストしてください。SSHトンネル は別のニーズに応えます:それはローカルまたはリモートのポートを透過させるもので、ホストの設定を置き換えるものではありません。
~/.sshをchmod 700 ~/.sshで保護してください。configファイルと各秘密鍵をchmod 600で保護してください。- 初めて接続する前に、
ssh -G nom_aliasでエイリアスを確認してください。 - 各新しいサーバーをそのエイリアスでテストし、共通オプションはファイルの下部に配置された
Host *ブロックに保持してください。
公式ドキュメント ssh_config(5) は各指示を詳述しています。本番マシンでエイリアスを使用する前に、ssh -G の出力を再確認するために2分かけてください:SSHが間違った鍵を選んだ理由を探すよりも速いです。
