こんにちは、こえじまです。
sshを頻繁にする人は、接続を簡単にするために~/.ssh/configを普段から書くクセをつけましょう。
今回はそのconfigファイルの書き方です。configファイルを作ることで
ssh vm1
など好きな名前でリモートPCにアクセスできるようになります。
.ssh/configの作成
まず、~/.ssh/configが無ければ作りましょう。
mkdir ~/.ssh touch ~/.ssh/config
書き方基本
基本的なパラメータは以下の4つです。
| Host | sshで繋ぎたいサイトの名前 |
|---|---|
| Hostname | 接続先のIPアドレスまたはドメイン名 |
| User | ログインユーザーネーム |
| IdentityFile | 接続に用いる鍵ファイル |
AWSのEC2インスタンスにSSHする時のサンプルは以下の通りです。
### AWS ###
Host ec2
Hostname ec2-00-000-000-000.ap-northeast-1.compute.amazonaws.com
User ec2-user
IdentityFile ~/.ssh/hogehoge.pem
これを~/.ssh/configに書いておくと
ssh ec2
でSSHログイン出来るようになります。
Hostは自由に付けられるので覚えやすい名前にしましょう。
また、#でコメントアウト出来るので適宜コメントを入れておくと可読性が上がるのでオススメです!
書き方発展
多段SSH
### mysite ###
Host koejima
Hostname koejima.com
User koejima
IdentityFile ~/.ssh/id_rsa
Host remotePC
HostName 10.0.0.1
User admin
ProxyCommand ssh -CW %h:%p -4 koejima
今回はkoejima.comを経由して10.0.0.1にsshすることにします。こんな感じ。

remotePCのHostnameやUserはkoejima.comからsshする時の情報を入力してください。
また、ProxyCommandの一番最後(上の例だとkoejimaとなっているところ)は、踏み台となるサーバーのHostで指定している名前を入れてください。
ワイルドカード
ワイルドカード(何にでも当てはまる文字)を使用することが出来ます。sshの接続先が大量になった時、分類するのに役立ちます。
Host *-group1
User koejima
IdentityFile ~/.ssh/id_rsa
Host *-group2
User hoge
IdentityFile ~/.ssh/hogehoge.pem
Host vm1*
Hostname 10.0.0.1
Host vm2*
Hostname 10.0.0.2
Host vm3*
Hostname 10.0.0.3
Host vm1-group1, vm1-group2, vm2-group1, vm2-group2, vm3-group1, vm3-group2
こうすることでvm1-group1、vm1-group2などそれぞれ別のユーザーでログインすることが出来るようになります。
最後に空の設定を入れているのは、ワイルドカードを使うとzshが補完をしてくれないから入れています。
補完機能を使っていないのであれば不要です。
その他おすすめの設定
Host *
IdentitiesOnly yes
ServerAliveInterval 120
ServerAliveCountMax 10
ForwardAgent yes
IdentityFile ~/.ssh/id_rsa
TCPKeepAlive yes
| IdentitiesOnly | 認証の際に、ssh_config ファイルで指定された秘密鍵のみを使用するよう指定。 |
|---|---|
| ServerAliveInterval | 一定期間サーバからデータが送られてこないときに、タイムアウトする秒数。 |
| ServerAliveCountMax | sshがサーバからの返答を確認するまでに、サーバ生存確認メッセージを何回まで送るか。 |
| ForwardAgent | 認証エージェントへの接続を、リモートマシン上に転送する。 |
| TCPKeepAlive | システムが相手のマシンにTCP keepaliveメッセージを送るかを指定。これが送られると、接続の異常終了や相手マシンのクラッシュが正しく通知される。 |
ServerAliveIntervalとServerAliveCountMaxはSSH接続を切れにくくするためのものです。この設定だと少なくとも20分は勝手に切れないことになります。
ForwardAgentについては分かりやすいQiitaがあったので以下参照。
ShellScript – ssh-agentの基本 – Qiita
より詳しく知りたい方はSSH_CONFIG (5)を御覧ください。


コメント
[…] config を書くことで ssh を便利で簡単にしよう! | one more step […]