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番号>
など、秘密鍵やポート番号、サーバーのユーザ名やホスト名の入力が不要になる
この設定で幸せに慣れること
- とにかく、毎回面倒な入力が減る!
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> の追加内容を記載
以上、完了!!