最近、クラウドやらVPSなどリモートで操作できるサーバーを、複数管理するようになってきています。そんな中、configファイルを作成して、効率的に秘密鍵を管理する方法を見つけました。
目次
1つのクライアントPC → 1つのサーバー
1つのクライアントPCから、1つのサーバーに対して、公開鍵認証を行うことは比較的簡単です。公開鍵認証方式でssh通信を行うときのオプションネームを、記述しなくても通信できるからです。以下のようなコマンドになりますが、
$ ssh -p 22 -i ~/.ssh/id_rsa_1 echizenya@160.▲▲▲.×××.□□□
iオプションと秘密鍵の名前を省略した書き方でも、サーバーと通信ができます。これぐらいなら頭の中で覚えておいても、しんどくありません(個人的にですが)。
$ ssh -p 22 ehizenya@160.▲▲▲.×××.□□□
1つのクライアントPC → 複数のサーバー
ところが、1台のクライアントPCで複数サーバーと公開鍵認証方式を使って通信しようとすると、覚えるのが大変になります。
2番目以降に設置したサーバーとssh通信をするときは、どの鍵を使うかをクライアントPCに対して、必ずiオプションで指定しなければなりません。こうなってくると鍵の名前だけでなく、長い文法も覚えておく必要があります。
$ ssh -p 22 -i ~/.ssh/id_rsa_2 echizenya@133.▲▲▲.×××.□□□
.ssh/configの内容で接続先を指定
そんなときに使えるのが、.ssh/configです。といってもconfigファイルは、初めから存在しているわけではありません。.sshの直下に自分でファイルを作成します。.sshディレクトリの中身はこんな感じになります。
echizenya-no-MacBook-Pro:.ssh echizenya$ ls -la -rw-r--r-- 1 echizenya staff 274 10 24 12:53 config -rw------- 1 echizenya staff 1679 6 19 19:41 id_rsa_1 -rw------- 1 echizenya staff 1675 6 19 20:03 id_rsa_2 -rw-r--r-- 1 echizenya staff 2828 10 24 15:22 known_hosts
そのconfigファイルに記述する内容は以下の通りです。
Host server1 HostName 160.▲▲▲.×××.□□□ Port 22 User echizenya IdentityFile ~/.ssh/id_rsa_1 Host server2 HostName 133.▲▲▲.×××.□□□ Port 22 User echizenya IdentityFile ~/.ssh/id_rsa_2
これで接続するコマンドは一気にラクになります。sshコマンドのあとに、任意で作成したHostの名前を付けるだけです。
$ ssh server1 $ ssh server2
これで管理するサーバーの台数が増えても、覚えることは少なくて済みますね。
〔参考サイト〕