概要
ssh のコマンドで、毎回ユーザー名や秘密鍵を指定するのはめんどうですよね。
そんなときに、便利になるのが ssh の接続情報を管理できる config ファイルです。
この記事では、ssh の config ファイルの設定方法を説明します。
通常の ssh 接続方法
まず、config ファイルを設定する前に、通常の ssh 接続方法を確認します。
ssh 接続の基本コマンドは、以下のようになります。
# ホストのみを指定して接続する
$ ssh <IPアドレス / ホスト名>
# ユーザー名とホストを指定して接続する
$ ssh <ユーザー名>@<IPアドレス / ホスト名>
22 番ポート以外が指定されていたり、公開鍵認証がかかっていたりする場合は、コマンドにオプションを指定します。
# 接続ポートを指定する
$ ssh <ユーザー名>@<IPアドレス / ホスト名> -p <ポート番号>
# 秘密鍵を指定する
$ ssh <ユーザー名>@<IPアドレス / ホスト名> -i <秘密鍵のパス>
その他オプションや詳しい使い方は、以下のサイトを参考にしてください。 ssh - UNIX/Linuxコマンド - IT専科
config ファイルの作成
ssh のコマンドは、ログインユーザーを指定したり、秘密鍵のパスを指定したりと入力するものが多くなりがちです。
ssh 接続をするたびに、これらの情報を指定するのはめんどうです。
そんなときは、ssh の config ファイルを使用することで、毎回の接続を簡略化することができるようになります。
config ファイルは、~/.ssh/config
に作成します。
ちなみに、システム全体の設定は /etc/ssh/ssh_config
に設定します。
※ 読み込みは、ssh_config
→ config
の順になります。
/etc/ssh/ssh_config # システム全体
~/.ssh/config # ユーザー固有
config ファイルを作成したら、あとはその中に各 ssh 接続の情報を記載していくだけです。
設定できる代表的な値は、以下のようなものがあります。
プロパティ | 説明 |
---|---|
Host | 接続するホストのエイリアス |
HostName | IPアドレス または ホスト名 |
User | ログインユーザ名 |
IdentityFile | 秘密鍵のパス |
Port | ポート番号 ※ デフォルトは 22 番 |
IdentitiesOnly | 指定した秘密鍵のみを使用するかどうか(yes, no) |
TCPKeepAlive | Keepalive の有効 / 無効(yes, no)※ デフォルトは yes |
ServerAliveInterval | KeepAlive メッセージの確認間隔(秒) |
ServerAliveCountMax | サーバから応答がなかった場合に、KeepAlive メッセージを何回まで送るか(回数) |
ForwardAgent | 認証エージェントへの接続を、接続先に転送するかどうか(yes, no)※ デフォルトは no |
ProxyCommand | ProxyCommand を指定する |
config ファイルの記載例
config ファイルは、以下のように設定します。
# 198.51.100.10 のサーバ
Host 198.51.100.10
User hoge
Port 22222
IdentityFile ~/.ssh/id_rsa
# example.com のサーバ
Host example
HostName example.com
User fuga
IdentityFile ~/.ssh/piyo.pem
IdentitiesOnly yes
サーバに接続する
config ファイルに情報を設定したら、ssh <Host名>
で接続します。
config に記載している Host は、tab キーで補完も効くので便利です。
$ ssh 198.51.100.10
$ ssh example
$ ssh [tabキー] # Host 候補が表示される
ワイルドカードで指定する
接続先が多い場合、Host 名をワイルドカード(*
または?
)で指定することができます。
また、Host *
と指定すると、全体に設定を反映することができます。
Host *
ServerAliveInterval 60
ServerAliveCountMax 10
Host 198.51.100.*
User hoge
Port 22
Host fuga*
User piyo
Port 22222
Hoge fugaA, fugaB, fugaC
$ ssh 198.51.100.1
$ ssh 198.51.100.10
$ ssh fugaA
$ ssh fugaC
踏み台サーバを設定する
config ファイルには、踏み台サーバ経由の接続も設定できます。
Host serverA
User hoge
Port 22
IdentityFile ~/.ssh/id_rsa
Host serverB
User fuga
Port 22222
IdentityFile ~/.ssh/piyo.pem
ProxyCommand ssh -W %h:%p serverA
$ ssh serverB # serverA 経由で serverB にログイン
おわりに
config ファイルを設定しておくと、ssh 接続の際の一手間をなくすことができるので、ぜひ設定してみてください : )