ssh設定

sshはすごい便利ですね。中でも気に入っているのが .ssh/config です。一番好きな設定ファイルです。

知らない人に便利さを伝えるときにここを見ろとするために書きます。

普通のログイン

host1.example.com にアクセスしたいときを想定します。

$ ssh <ユーザ名>@host1.example.com

初回の接続時には、以下のような確認メッセージが出ます。

The authenticity of host 'host1.example.com' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)?

yes とすれば良いです。この確認メッセージはサーバの秘密鍵フィンガープリントになるのですが、もしDNSキャッシュポイズニングなどで接続先などが書き換えられて悪意のあるサーバにアクセスさせられかけたときに、あれ?フィンガープリント変わってるけど大丈夫???って聞いてくれる仕組みです。

次にパスワードが問い合わされるので答えてあげましょう。 認証が通れば晴れてログインです。

鍵認証

毎回パスワードを入力するのはセキュリティリスクが高くあまり推奨されません、それに面倒ですね。 そこで一般的には公開鍵認証というのが用いられます。公開鍵暗号の仕組みそのものはwikiに説明を譲ります。

まずは自分の秘密鍵と公開鍵を生成する必要があります。

$ ssh-keygen

すると

Generating public/private rsa key pair.
Enter file in which to save the key (/home/you/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/you/.ssh/id_rsa.
Your public key has been saved in /home/you/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx you@your_host

このように出ます。最初の Enter file in which to save the keyでは鍵の位置が聞かれていますが、デフォルトでいいでしょう。 次の Enter passphrase (empty for no passphrase)Enter same passphrase again では秘密鍵に対するパスワードを問われています。 秘密鍵は名の通り秘密にしなくては行けない鍵で、万が一漏れた際には登録しているサーバに問答無用で入られてしまうので鍵をかけたほうがセキュリティは安全です。 が、面倒な場合はかけなくても良いです。そうした場合は鍵の取扱には十分注意してください。

このコマンドのあと ~/.ssh/id_rsa~/.ssh/id_rsa.pub というファイルが生成されています。 ~/.ssh/id_rsa秘密鍵~/.ssh/id_rsa.pub が公開鍵となります。

サーバに公開鍵を配置すると、自動的に公開鍵認証が用いられます。 サーバサイドの ~/.ssh/authorized_keys に公開鍵を追加します。

$ mv id_rsa.pub .ssh # id_rsa.pubはコピーしてきた公開鍵
$ cd .ssh
$ cat id_rsa.pub >> authorized_keys

.ssh/config

~/.ssh/config というファイルに設定を書くことで接続先に名前をつけたり、接続先固有の設定などができたりします。

例えば上の例をもとにすると、

 Host host1
     HostName host1.example.com
     User <ユーザ名>

こうすると、 ssh host1 だけで、User名とHostNameが設定されます。便利。

以下追記していく