前回の投稿では ssh コマンドの基本的な使い方と便利なオプションを紹介しました。しかし、複雑なIPアドレス、ユーザー名、ポート番号を毎回入力するのは大変です。 そこで SSH Config ファイル を使えば、これらの手間を一度に解消できます。お気に入りのように頻繁に使うサーバーの接続情報を保存し、エイリアス(Alias) で簡単に接続できるようになります。

私自身、config ファイルの存在を知らなかった「完全初心者」の時期には、よく使うコマンドをそのまま .bashrc に alias として登録していました。config ファイルの書き方を知った後で、どれだけ無駄な方法を使っていたかが分かりました。

SSH config を知って感動する私の姿


SSH Config ファイルとは?

SSH Config ファイル は SSH クライアントの動作をユーザー定義する設定ファイルです。このファイルに特定のホストに関する接続情報(ユーザー名、ポート、使用するキーなど)を事前に保存しておくと、後で接続する際に短いエイリアスだけで接続できます。

  • 場所:一般的にユーザーのホームディレクトリの .ssh フォルダ内に config という名前で存在します。ssh を初めてインストールしたばかりなら存在しない場合があります。その場合は作成します。

  • ファイル作成:もし ~/.ssh/config ファイルが無ければ、直接作成します。権限は必ず 600 にしてください。

    touch ~/.ssh/config
    chmod 600 ~/.ssh/config  # セキュリティのため権限設定は必須!

Config ファイルの書き方

Config ファイルはシンプルなテキストファイルで、各ホストに関する設定は Host キーワードで始まり、ブロック形式で記述します。

基本構造

Host [エイリアス]
    [オプション1] [値1]
    [オプション2] [値2]
    ...
  • Host [エイリアス]:このブロックの開始を示し、使用する エイリアス(Alias) を定義します。エイリアスの代わりに実際のホストアドレス(IPまたはドメイン)を直接入れることも可能です。ワイルドカード文字(*?)も使用できます。
  • インデントHost の下のオプションは インデント する必要があります。空白やタブを使っても構いませんが、一貫性を保つことが重要です。
  • オプションHost の下には、そのエイリアスで接続する際に適用されるさまざまな SSH オプションを列挙します。これらは以前 ssh -オプション 形式で使用したものと同じです。

よく使うオプション

オプション 説明
HostName 実際に接続するサーバーの IP アドレスまたはドメイン名 192.168.1.100 または example.com
User リモートサーバーに接続するユーザー名 ubuntuec2-userroot
Port リモートサーバーの SSH ポート番号(デフォルトは 22) 2222
IdentityFile 接続時に使用する秘密鍵ファイルのパス ~/.ssh/id_ed25519_myserver
ForwardAgent SSH エージェント転送を有効にする(ssh-agent 使用時) yes
StrictHostKeyChecking ホストキー検証を厳格にするかどうか(yes 推奨) no(初期テスト時に一時的に使用)
PortForwarding ポート転送を許可するか yes
LocalForward ローカルポート転送設定(-L オプションと同等) 8080 localhost:80
ServerAliveInterval サーバーが生存しているか確認する間隔(秒単位) 60(切断防止)
ServerAliveCountMax サーバー確認失敗時に接続を切断する前の再試行回数 3

SSH Config ファイルの作成例

頻繁に接続するいくつかのサーバーの設定を ~/.ssh/config ファイルに追加してみましょう。

# 第一サーバー:ウェブサーバー(エイリアス:webserver)
Host webserver
    HostName 192.168.1.100
    User ubuntu
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_webserver # ウェブサーバー専用キー使用

# 第二サーバー:開発サーバー(エイリアス:devbox)
Host devbox
    HostName dev.example.com
    User developer
    IdentityFile ~/.ssh/id_rsa_dev # RSA キー使用
    # このサーバーに接続する際にローカル 8000 ポートをリモートサーバーの 80 ポートへ転送
    LocalForward 8000 localhost:80 

# 第三サーバー:すべての AWS EC2 サーバー(エイリアス:aws-*)
Host aws-*
    User ec2-user
    IdentityFile ~/.ssh/aws_ec2_key.pem
    # 接続が切れないように定期的にシグナルを送る
    ServerAliveInterval 60
    ServerAliveCountMax 3

# 特定 IP 範囲に対する一般設定(エイリアス:10.0.0.*)
Host 10.0.0.*
    User admin
    Port 22

説明:

  • webserver192.168.1.100 サーバーに ubuntu ユーザーで 2222 番ポートと id_ed25519_webserver キーを使って接続できます。
  • devboxdev.example.com サーバーに developer ユーザーで id_rsa_dev キーを使って接続し、ローカル 8000 番ポートをリモート 80 番ポートへ転送します。
  • aws-*aws- で始まるすべてのエイリアスに適用される設定です。例えば aws-prodaws-dev で接続すると UserIdentityFile が自動で適用されます。HostNameaws-prod で接続時に prod になります(後で ssh aws-prod コマンドで使用)。
  • 10.0.0.*10.0.0.x 形式の IP アドレスに接続する際に自動で admin ユーザーとデフォルト 22 番ポートが適用されます。

実際には * ワイルドカード方式をあまり使いません。サーバーごとに 1:1 で設定する方が管理しやすいです。
同じサーバーを別の設定でアクセスする場合もあるので、その都度設定を追加し、レストランでメニューを見て料理を選ぶようにエイリアスを選んで ssh my-alias のように注文する形にしています。


SSH 接続ボタンを押すとネットワークに魔法のように広がる画像

Config ファイルの使い方

Config ファイルに設定を保存したら、実際の接続はずっと簡単になります。上記例を基に試してみましょう。

1. エイリアスで接続

エイリアスだけを使って SSH 接続コマンドを実行します。

  • webserver エイリアス使用
    ssh webserver
    Enter passphrase for key '/home/youruser/.ssh/id_ed25519_webserver':
    ubuntu@webserver-ip:~ $

このコマンドは内部的に ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100 と同等に動作します。

  • devbox エイリアス使用
    ssh devbox
    Enter passphrase for key '/home/youruser/.ssh/id_rsa_dev':
    developer@devbox-domain:~ $

(同時にローカル 8000 番ポートで接続すると dev.example.com の 80 番ポートへ接続されます)


Config ファイルを使うメリット

  • 便利さ:長く複雑な SSH コマンドを短いエイリアスに置き換えることで入力ミスを減らし、時間を節約できます。
  • 生産性:頻繁に接続するサーバーを素早く行き来でき、作業効率が向上します。
  • 管理のしやすさ:すべての接続設定を一箇所で管理でき、保守が容易です。例えばサーバーの IP が変更されても Config ファイルだけを修正すれば済みます。
  • セキュリティ:重要情報(例:キー ファイルのパス)をコマンド履歴に残さずに済みます。

まとめ

SSH Config ファイルは、SSH を使用するすべての開発者とシステム管理者にとって必須のツールです。このファイルを活用して、SSH 接続体験をより便利で効率的にしましょう。~/.ssh/config ファイルを開き、あなた自身のエイリアスを作成してみてください!

SSH に関する他の投稿もぜひご覧ください!右側の検索欄で「ssh」と検索すると、SSH 関連のさまざまな記事が見られます。

疑問があればいつでもコメントで質問してください!