知っておきたい~/.ssh/configの書き方メモ(多段やワイルドカード、おすすめ設定など)

PR

こんにちは、こえじまです。

sshを頻繁にする人は、接続を簡単にするために~/.ssh/configを普段から書くクセをつけましょう。

今回はそのconfigファイルの書き方です。configファイルを作ることで

ssh vm1

など好きな名前でリモートPCにアクセスできるようになります。

.ssh/configの作成

まず、~/.ssh/configが無ければ作りましょう。

mkdir ~/.ssh
touch ~/.ssh/config

書き方基本

基本的なパラメータは以下の4つです。

Hostsshで繋ぎたいサイトの名前
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することにします。こんな感じ。

多段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一定期間サーバからデータが送られてこないときに、タイムアウトする秒数。
ServerAliveCountMaxsshがサーバからの返答を確認するまでに、サーバ生存確認メッセージを何回まで送るか。
ForwardAgent認証エージェントへの接続を、リモートマシン上に転送する。
TCPKeepAliveシステムが相手のマシンにTCP keepaliveメッセージを送るかを指定。これが送られると、接続の異常終了や相手マシンのクラッシュが正しく通知される。

ServerAliveIntervalとServerAliveCountMaxはSSH接続を切れにくくするためのものです。この設定だと少なくとも20分は勝手に切れないことになります。

ForwardAgentについては分かりやすいQiitaがあったので以下参照。

ShellScript – ssh-agentの基本 – Qiita

より詳しく知りたい方はSSH_CONFIG (5)を御覧ください。

PR

コメントを残す

メールアドレスが公開されることはありません。