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`に同じ
...
...
どのような設定が使えるのかはマニュアルを参照ください。