はじめに

こんばんは。KMC のひよこ鑑定士 non117 です。Tumblrで回転寿司よろしくreblogするのが日課です。最近は、夜な夜なアブサンと角砂糖を舐めて過ごしています。

この記事はKMCアドベントカレンダー2013の12日目の記事で、昨日の記事は possum さんのautosshでした。また、この記事はKMCアドベントカレンダー2013のサブプロジェクトであるSSHアドベントカレンダー2013の記事でもあります。

SSHアドベントカレンダー2013、5日目はssh_configのお話です。

ssh_config

ssh_configとは、opensshで使えるsshの設定ファイルです。opensshとは、Unixやcygwin環境で一般的なsshのクライアントです。sshクライアントとして、puttyやtera termを使っているユーザには縁のない話になります。

コマンドラインでsshをするときには、

$ ssh -i ~/.ssh/example_key -p 30022 non117@example.net

みたいに、オプションをたくさんつけることがあります。iで秘密鍵の指定、pでポートの指定、そして、ユーザ名にホスト名ですね。

しかし、三度の食事よりも寒い朝の二度寝よりもsshすることが好きな読者の皆様におかれましては、このようなオプションをいちいちつけてsshすることは面倒なことこの上ないことだと思います。

1回だけ接続するサーバなら兎も角、毎日ログインするサーバには予め設定を用意しておいて

$ ssh example

のようなシンプルなコマンドでサーバに接続したいところです。

そして、それを実現する方法がssh_configです。

具体的な設定方法

以下のようなファイルをホームディレクトリの .ssh/config つまり、 ~/.ssh/config に書きます。

あるいは、 /etc/ssh/ssh_config に書くと、そのシステム全体の設定にもなります。 システム全体と個人ユーザの設定が共存している場合には、ユーザ毎の設定が優先されます。

例:

Host example
  Hostname example.net
  Port 30022
  User non117
  IdentityFile ~/.ssh/example_key

1つの設定の中でポート番号などの設定はどんな順番で記述しても構いません。 また、

Host *
  Compression yes
  ForwardAgent yes
  TCPKeepAlive yes
  IdentitiesOnly yes

のように書くと、すべてのホストに対するデフォルトとして記述できます。

別の設定を書きたければ、

Host hoge
  Hostname hoge.org
  Port 10022
  User non
...

のように、exampleの設定の下にでも、Hostブロックを追記していくことになります。 また、Hostの設定名が異なれば、同じHostnameでも異なる設定として扱われます。

その他の文法やコマンド

応用

ssh_configは、 scpコマンドやgitコマンドでも使えます。

$ scp example:~/piyo.py .
$ git clone example:/git/poe.git

のように、Hostの設定名をコマンドに渡すだけです。

おわりに

この記事で紹介したsshの設定はごく一部ですが、これだけでも日々のsshが快適になるでしょう。私の記事が皆様のssh生活の一助になれば幸いです。

明日はnojimaさんによるauthorized_keysの解説です。

参考文献

  1. SSH_CONFIG (5)