sshする際にconfigファイルを設定しておくと幸せになれるという話

2021/02/07

業務でOpenSSHを使う機会があったのですが、configファイルを設定しておくと接続設定をショートカットできて便利だったので、備忘録も兼ねて記します。

(以下全てmacでの操作を前提にしています。)

1. configファイルを使うと何がいいのか?

コマンドラインに、

ssh Host名

と入力することにより、予めconfigファイルに記述していたオプションに従ってSSH接続が行われます。
毎回コマンドラインからオプションを指定したり、過去ログを掘り返して呼び出したりするより便利です。

2. configファイルの場所

以下2箇所に格納されています。
上がユーザ設定ファイル、下が全ユーザ共通の設定ファイルになります。

~/.ssh/config 

 /etc/ssh/ssh_config

上記どちらも同じ形式で記述できますが、

①コマンドライン
②ユーザ設定ファイル
③共通設定ファイル

の順に優先されます。

3. キーワード

今回業務上で用いたもののみ記しています。

Host...SSH接続につける名前。以降に続くキーワードに従ってSSH接続が行われる。
HostName...ログイン先サーバのホスト名。IPアドレスかドメインを指定する。
User...ユーザ名。SSH接続するユーザ名を指定する。
IdentityFile...秘密鍵ファイルへのパス。
Port...ポート番号。
RemoteCommand...サーバに接続後、リモートホストで実行されるコマンド。
RequestTTY...接続先のサーバでシェルを起動するかを指定する。

 4. 実用例

(1) ローカルサーバー (192.168.33.30) にwwwユーザでSSH接続

・config

HOST sample1
   User www
   HostName 192.168.33.30

・実行コマンド

$ssh sample1

(2) githubにSSHで接続する (ユーザ名: hoge / 秘密鍵のパス: ~/.ssh/id_rsa_sample)

・config

Host sample2
    HostName github.com
    User hoge
    IdentityFile ~/.ssh/id_rsa_sample

・実行コマンド

$ssh sample2

(3) hoge.co.jpにwwwユーザで10055番ポートにSSH接続する (秘密鍵のパスは~/.ssh/id_rsa_sample)

Host sample3
   User www
   Port 10055
   HostName hoge.co.jp
   IdentityFile ~/.ssh/id_rsa_sample

・実行コマンド

$ssh sample3

(4) wwwユーザでfuga.co.jpにSSH接続後、cd ~/file/path/to/destination を自動実行する(秘密鍵のパスは~/.ssh/id_rsa_sample)

Host sample4
    HostName fuga.co.jp
    User www
    IdentityFile ~/.ssh/id_rsa_sample
    RequestTTY force
    RemoteCommand cd ~/file/path/to/destination

・実行コマンド

$ssh sample4

参考までに、(4)をコマンドラインで記述したパターンを載せておきます。
毎回コマンドを叩くより、configファイルに設定した方がスムーズであることが分かります。

$ssh www@fuga.co.jp -i ~/.ssh/id_rsa_sample -t -t "cd ~/file/path/to/destination"

本記事はここまでになります。

configを設定しておくと便利ですね。