前回の投稿では 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 ファイルの書き方 {#sec-a6ba2fff88f5}

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

#### 基本構造

Host [エイリアス] [オプション1] [値1] [オプション2] [値2] ...


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

### よく使うオプション {#sec-488803d47bdf}

|  |  |  |
| --- | --- | --- |
| **オプション** | **説明** | **例** |
| `HostName` | 実際に接続するサーバーの IP アドレスまたはドメイン名 | `192.168.1.100` または `example.com` |
| `User` | リモートサーバーに接続するユーザー名 | `ubuntu`、`ec2-user`、`root` |
| `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 ファイルの作成例 {#sec-92c9daf3ee29}

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

```ini
# 第一サーバー:ウェブサーバー(エイリアス: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 関連のさまざまな記事が見られます。

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