configを書くことでsshを便利で簡単にしよう!

PR

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

ssh接続を簡単にするために.ssh/configを普段から書くクセをつけましょう。今回はそのconfigファイルの書き方です。configファイルを作ることで

ssh vm1

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

.ssh/configの作成

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

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

書き方基本

### AWS ###
Host ec2
    Hostname ec2-00-000-000-000.ap-northeast-1.compute.amazonaws.com
        User ec2-user
        IdentityFile ~/.ssh/hogehoge.pem
Hostsshで繋ぎたいサイトの名前
Hostname接続先のIPアドレスまたはドメイン名
Userログインユーザーネーム
IdentityFile接続に用いる鍵ファイル

#でコメントアウトされます。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からsshする時の情報を入力してください。ProxyCommandの一番最後に踏み台となるサーバーの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

コメントを残す

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