前回の投稿では ssh
コマンドの基本的な使用法や便利なオプションについて見てきました。しかし、毎回複雑なIPアドレス、ユーザー名、ポート番号などを入力するのは面倒なことです。そこで SSH Configファイル を活用すれば、この煩わしさを一度に解消できます。まるでブックマークのように、頻繁に使用するサーバー接続情報を保存して エイリアス(Alias) で簡単に接続できる魔法のファイルです。
SSH Configファイルとは何ですか?
SSH Configファイル は、SSHクライアントの動作をユーザーがカスタマイズするための設定ファイルです。このファイルに特定のホストに対する接続情報(ユーザー名、ポート、使用するキーファイルなど)をあらかじめ保存しておくことで、後で接続する際に短いエイリアスだけで接続可能になります。
- 位置: 通常、ユーザーのホームディレクトリ内の
.ssh
フォルダーにconfig
という名前で存在します。- 例:
~/.ssh/config
- 例:
-
ファイル作成: もし
~/.ssh/config
ファイルが存在しない場合は、自分で作成すれば良いです。bash touch ~/.ssh/config chmod 600 ~/.ssh/config # セキュリティのため、読み書き権限は所有者にのみ付与
Configファイル作成ルール
Configファイルは単純なテキストファイルで、各ホストに対する設定は Host
キーワードで始まり、ブロック形式で作成されます。
基本構造
Host [エイリアス]
[オプション1] [値1]
[オプション2] [値2]
...
-
Host [エイリアス]
: このブロックの開始を示し、使用するエイリアス(Alias)を定義します。このエイリアスはSSHコマンドに使用します。エイリアスの代わりに実際のホストアドレス(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エージェントフォワーディングを有効にする(Agent Forwarding, 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
の設定が自動的に適応されます。HostName
はaws-prod
で接続時にprod
になります(後でssh aws-prod
コマンドで使用)。 -
10.0.0.*
:10.0.0.x
形式のIPアドレスに接続する際に自動的にadmin
ユーザーとデフォルトの22ポートが適応されます。
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ポートに接続されます)
aws-prod
(ワイルドカードエイリアス)使用:
ssh aws-prod
Enter passphrase for key '/home/youruser/.ssh/aws_ec2_key.pem':
ec2-user@aws-prod-hostname:~ $
注意: aws-prod
のようにホスト名を特に指定していないワイルドカード Host
の場合、HostName
オプションを明示的に指定するか、コマンドラインでホスト名を指定する必要があります。上記の aws-*
の例では HostName
が指定されていないため、実際に ssh aws-prod
を実行するとSSHクライアントはprod
をホスト名として解釈しようとします。より明確に使用するためには、Host prod-server
のようにエイリアスとHostName prod.example.com
をマッピングするのが一般的です。
Configファイル使用の利点
- 便利さ: 長く複雑なSSHコマンドを短いエイリアスに置き換えることで、入力エラーを減らし、時間を節約できます。
- 生産性: よく接続するサーバーを迅速に行き来できるため、作業効率が向上します。
- 管理の容易さ: 接続関連の全ての設定を一カ所で管理できるため、保守が容易です。例えば、サーバーのIPアドレスが変更されてもConfigファイルだけ修正すればよいです。
- セキュリティ: 重要な情報(例:キー ファイルのパス)をコマンドヒストリーに残さなくて済みます。
おわりに
SSH Configファイルは、SSHを使用するすべての開発者やシステム管理者にとって必須のツールです。このファイルを活用することで、あなたのSSH接続体験をより便利で効率的にすることができます。 ~/.ssh/config
ファイルを開いて、あなた自身のエイリアスを作ってみてください!
SSHに関連した他の投稿もぜひ読んでみてください!右側の検索窓で「ssh」と検索すると、SSHに関するさまざまな記事を探すことができます。
疑問がある場合は、いつでもコメントで質問してください!
コメントはありません。