sshコマンドの設定ファイルssh_config
についてです。
ほったん
開発をやっていると、色々なサーバのシェルにリモート接続して作業を行うことが多い。
そんな時に、いちいちホスト名を調べて、鍵ファイルパスを確認し、ssh
コマンドを叩くというのは骨が折れます。もっとも、こんな単純作業に無駄な時間と体力を使っている場合ではありません。
例えば、リモートホストに適当にニックネームをつけておいて、例えばAWSのいつも使うインスタンスであればaws
など、そうして、ssh aws
だけでリモート接続できるようにしておけば便利です。
- あ、
aws
マシンに入る必要があるな、と思いつき、 - ターミナルを開いて、
- 何も思わず、
% ssh aws
と叩く - ログイン完了
で、3秒以内にログインできるようになります。
このssh aws
コマンドを実現するための設定を見ていきます。
ssh_config
ファイル
ssh
コマンドはデフォルトで~/.ssh/config
を設定ファイルの一部として読み込みます。このファイルの中に、リモートホストへのログイン情報を書いておくと、上記のようなssh aws
だけでログインできるようになります。
例えば、以下のようなリモートホストがある場合を考えてみます。
- sshのIPアドレス:
12.34.56.78
- sshのポート番号:
22
- ログインユーザー名:
user001
- ログインの秘密鍵のパス:
~/.ssh/my-ssh-key
このホストをaws
という名前にして、以下の設定を~/.ssh/config
に書いておきます。
Host aws
Hostname 12.34.56.78
User user001
Port 22
IdentityFile ~/.ssh/my-ssh-key
以降はターミナルを開いて、ssh aws
コマンドですぐにログインできます。
% ssh aws
user001@instance-1:~$
ちなみに、他のsshのオプションはコマンド時にアドホックに追加可能です。
例えば、上記のaws
ホストに対して、追加でPortForward(例えば、localのport 8080をaws
マシンのport 80にforward)を追加する場合は以下のように書けます。
% ssh aws -L8080:localhost:80
このようにシンプル・クイックにリモートにログインできるようになりました。 もちろん、このリモートホストの設定は複数描けるようになっています。 また、sshの各種オプションも一緒に書けるようになっています。
Host aws
Hostname 12.34.56.78
User user001
Port 22
IdentityFile ~/.ssh/my-ssh-key
Host gcp
Hostname 11.22.33.44
User user123
Port 10022
IdentityFile ~/.ssh/my-ssh-for-gcp
LocalForward 3306 localhost:3306 <= コマンドオプション`-L3306:localhost:3306`に同じ
...
...
どのような設定が使えるのかはマニュアルを参照ください。