1. TOPTOP
  2. インフラ

.ssh/configの設定。1台のクライアントPCで複数の秘密鍵を効率的に管理

Browser

最近、クラウドやらVPSなどリモートで操作できるサーバーを、複数管理するようになってきています。そんな中、configファイルを作成して、効率的に秘密鍵を管理する方法を見つけました。

key-74534_1280

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

これで管理するサーバーの台数が増えても、覚えることは少なくて済みますね。

〔参考サイト〕