SSH conf を簡単に接続する方法まとめた!

ConoHa VPSに、Debian OSを構築し、WEBアプリをデプロイする方法をまとめた。
その折、サーバーにSSH接続環境を構築することが最初のSTEPにあったが、毎回SSHコマンドにオプション、秘密鍵のパス、ホスト名、ユーザー名などを付与するのは手間…

今は管理する環境が限られているから問題ないが、今後増えて行くことを考えると、効率的に慣るする方法がないか?を調べてみた。

その結果、SSHコマンド専用のconfigファイルを準備し、その中に設定情報をまとめて記入しておくことが可能ということがわかった!!

これは便利だ!!

ということで、以下にその情報をまとめてみた



環境

クライアントPC

  • MacOSX 10.13.4
  • OpenSSH_7.6p1, LibreSSL 2.6.2

サーバー

サーバー側の環境には依存しない
但し、サーバーサイドのsshd_configファイル内の設定は、下記同等であることを前提とする。

#sshd_config設定内容
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no

サーバーの環境構築とSSH設定の詳細に関しては、
ConoHa VPS の Debian9 に Djangoベースのサービスデプロイしてみた!!〜その①〜
を参照

ゴール

今回ssh_donfigを取り入れると、下記1行でサーバーに一発接続が可能になる

$ ssh hoge.com

これまで使っていた

$ ssh -i "秘密鍵" <username>:<HostName> -p <Port番号>

など、秘密鍵やポート番号、サーバーのユーザ名やホスト名の入力が不要になる

この設定で幸せに慣れること

  1. とにかく、毎回面倒な入力が減る!
  2. gitなどの分散型チーム開発で無駄な設定が減る&管理しやすくなる!

早速、その為の手順を以下にまとめる



Step1. 設定ファイルの編集

MacOSXの場合、~/.ssh/ssh_configファイルに設定情報を入力する為、下記コマンドから編集する

vi ~/.ssh/ssh_config

もしviエディタに不慣れな場合は、nanoエディタでもOK!

<ポイント>
パスにある通りこの設定ファイルは、現在のユーザーに限定して有効である。
管理者権限のユーザーに共通した設定を準備する場合には、
/etc/ssh/ssh_config
に入力する必要がある

Step2. サーバー接続の為の情報を追記

まず記述項目を以下に列記

キーワード 内容
Host ホスト名
HostName ホストのアドレス
User ログインユーザー名
IdentitiesOnly 秘密鍵が必要か?
IdentityFile 秘密鍵ファイル(パス含む)
Include 分散したconfigファイル読込む(分割/分散管理を実現)
Port 接続用ポート番号(Default:22)
ServerAliveInterval サーバー応答なしの場合、タイムアウトまでの時間(秒)
TCPKeepAlive サーバー接続を継続するか?


この他にも様々な設定キーワードがある。詳細を確認する場合は、下記コマンドで確認可能

$ man ssh_config

必要なキーワードをssh_configファイル内に記載
今回は下記情報と仮定して入力する。

<ポイント>
Hostをメインに、それ以外の設定内容はインデントを下げること!

#hogehoge.net
Host hogehoge.net
  HostName xxx.xxx.xx.xxx
  User hoge
  IdentityFile ~/.ssh/id_rsa_secret_key

Step3. サーバーに接続

下記コマンドでサーバーに接続する

# ssh <ホスト名>
$ ssh hogehoge.net

下記エラーが発生した場合する可能性

ssh: Could not resolve hostname hogehoge.net: nodename nor servname provided, or not known

エラーは~/.ssh/ssh_configを参照できていないことが原因と考えられる為、該当するssh_configファイルをオプション指定する

$ ssh -F .ssh/ssh_config hogehoge.net

もしくは、/etc/ssh/ssh_config<STEP.2> の追加内容を記載

以上、完了!!