管理するサーバ台数が増えてくるとSSHでの接続が手間になりconfigに設定を書くことも多くなると思います。
また、扱うサーバ台数が増えてくるとそもそもconfigに記載したかどうかすらも分からなくなってきます。そこで今回は、「.ssh/config」を利用するときにちょっと便利になる設定を紹介します。
Host名の補完機能
これはHost名を補完してくれる機能です。地味に便利な機能です。
インストール方法
以下のコマンドを実行し補完機能をインストールしてください。
この機能はsshだけでなくserviceコマンドなど他のコマンド実行時においても補完してくれます。
# Mac brew install bash-completion # CentOs yum --enablerepo=epel install -y bash-completion
Host名の一覧表示
Host名の一覧を表示するコマンドを自作しました。補完機能でほぼまかなえますが、Host名の先頭のを覚えていない時に。
以下のコマンドを「.bash_profile」なりに設定してください。
設定方法
alias sshlist="cat ~/.ssh/config |grep ^Host\ |sed -e 's/^Host\ //g'"
使い方
使い方は「sshlist」とするだけでHostの一覧が表示されます。
下記のようなconfig設定があったとして
Host abc_web_01 HostName 111.111.111.001 IdentityFile ~/.ssh/abc_id_rsa1 User ec2-user Host def_web_01 HostName 111.111.111.002 IdentityFile ~/.ssh/def_id_rsa1 User ec2-user
これに対して実行すると
$ sshlist abc_web_01 def_web_01
Host名に「def」を含む一覧を表示
$ sshlist |grep def def_web_01
タイムアウト防止
一定時間操作しなかった場合にタイムアウトすることがありますが、以下の設定をすると
指定時間時間ごとに通信をしてタイムアウトを防いでくれます。
ServerAliveInterval 15
サーバのタイムアウト設定は基本的にはセキュリティを考慮したもののため、
この設定をして回避するのは微妙な気がします。
おまけ
scpコマンドからでも.ssh/configが利用できます。
ファイル受信
scp abc_web_01:/home/user/remotefile.txt /tmp/
ファイル送信
scp localfile.txt abc_web_01:/home/user/