~/.ssh/configによるssh接続の管理

この記事では、~/.ssh/configファイルも用いたssh接続の管理方法を紹介します。

複数のサーバを管理している場合、毎回sshコマンドをサーバごとに入力するのは大変です。さらに鍵認証を採用しているなら、秘密鍵も指定しないといけないので、なおさらです。

そこで、登場するのが、sshクライアントの設定ファイルである~/.ssh/configです。

クライアント端末で~/.ssh/configを設定すると、複数のサーバを管理していても簡単に各サーバにログインできるようになります。

なお、今回の設定は、サーバにsshが実施できることが前提となっていますので、まだssh接続を設定していない場合は以下の記事を参考に設定してみてください。

関連記事→sshの基本設計
関連記事→sshの鍵認証設定

1.~/.ssh/configの作成

以下の記事を参考にsshの鍵認証設定を実施している場合は、既に~/.sshディレクトリを作成していますので、1-2.から実施してください。

関連記事→sshの鍵認証設定

1-1.クライアント端末での~/.sshディレクトリの作成

クライアント端末側で、ターミナルからホームディレクトリを開いた状態にします。以下のコマンドでディレクトリ・ファイルの一覧を表示し、~/.sshディレクトリの有無を確認します。

$ ls -la

~/.sshディレクトリが存在しなければ、以下のコマンドでディレクトリを作成して、700のアクセス権限(ディレクトリのオーナー以外はアクセス不可)を付与します。

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh

1-2.~/.ssh/configの作成

以下のコマンドで~/.ssh配下にconfigファイルを作成します。

$ touch ~/.ssh/config

2.~/.ssh/configの編集

~/.ssh/configを編集して、接続したいサーバのsshの接続情報を記載します。~/.ssh/configの書き方は以下のような形です。

# Aサーバ
Host serverA
    Hostname hogehoge.com
    Port 22
    User tanaka
    IdentityFile ~/ssh/config/serverA.key

# Bサーバ
Host serverB
    Hostname xxx.xxx.xxx.xxx
    Port 50134
    User yamada
    IdentityFile ~/ssh/config/serverB.key

# Cサーバ
Host serverC
    Hostname satou-test.co.jp
    Port 48912
    User satou

~/.ssh/configの各パラメータの意味は以下のとおりです。他にもパラメータがありますが、今回はある程度必要なものだけを記載しています。

パラメータ内容
Host接続したいサーバのホスト名のエイリアス
HostName接続したいサーバのドメイン、もしくはIPアドレス
Portssh接続のポート番号(デフォルトは22番)
Userssh接続のユーザ名
IdntityFile(鍵認証を行う場合)秘密鍵ファイルのパス

3.サーバへの接続

~/.ssh/configを設定が完了すると、サーバへ接続する場合は、先程設定したHostのエイリアスを使って以下のように接続できるようになります。

サーバAに接続する場合

$ ssh serverA

サーバBに接続する場合

$ ssh serverB

サーバCに接続する場合

$ ssh serverC

終わりに

今回は~/.ssh/configによるssh接続の管理方法を紹介しました。これで、サーバが何台あろうと秘密鍵がサーバごとにあろうと簡単に接続できます。