前回の投稿では ssh コマンドの基本的な使い方と便利なオプションを紹介しました。しかし、複雑なIPアドレス、ユーザー名、ポート番号を毎回入力するのは大変です。
そこで SSH Config ファイル を使えば、これらの手間を一度に解消できます。頻繁に利用するお気に入りのサーバーの接続情報を保存し、エイリアス(Alias) で簡単に接続できるようになります。
私自身、config ファイルの存在を知らなかった「完全初心者」の時期には、よく使うコマンドをそのまま .bashrc に alias として登録していました。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 |
リモートサーバーに接続するユーザー名 | 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 ファイルの作成例
頻繁に接続するいくつかのサーバーの設定を ~/.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
説明:
webserver:192.168.1.100サーバーにubuntuユーザーで2222番ポートとid_ed25519_webserverキーを使って接続できます。devbox:dev.example.comサーバーにdeveloperユーザーでid_rsa_devキーを使って接続し、ローカル 8000 番ポートをリモート 80 番ポートへ転送します。aws-*:aws-で始まるすべてのエイリアスに適用される設定です。例えばaws-prodやaws-devで接続するとUserとIdentityFileが自動で適用されます。10.0.0.*:10.0.0.x形式の IP アドレスに接続する際に自動でadminユーザーとデフォルト 22 番ポートが適用されます。
実際には
*ワイルドカード方式をあまり使いません。サーバーごとに 1:1 で設定する方が管理しやすいです。
同じサーバーを別の設定でアクセスする場合もあるので、その都度設定を追加し、レストランでメニューを選ぶようにエイリアスを選び、ssh my-aliasと入力して接続する形にしています。

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 関連のさまざまな記事が見られます。
疑問があればいつでもコメントで質問してください!
連関ポスト:
コメントはありません。