• Top
  • Search
  • About
  • Privacy Policy
2968383

概要

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_configconfig の順になります。

/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 接続の際の一手間をなくすことができるので、ぜひ設定してみてください : )