VPS(Virtual Private Server) などでインターネットを経由して、
SSH で接続する場合、ID とパスワードでの認証などはせず、
公開鍵認証をすることが常識のようです。
ただ、ここまで VPS の利用がメジャーになってくると、
一人で(一つの端末で)複数のサーバーを管理することも珍しくなくなってきました。
たぶん、私ごときがそんな立場に追い込まれるところ見るとそうなのでしょう orz
Windows で
Tera Term なんかを使っているときは、
接続ダイアログで秘密鍵をそれぞれに指定すればいいのですが、
Linux や Mac でコンソールから ssh で公開鍵認証をする場合、
通常、ホームディレクトリの .ssh ディレクトリに id_rsa と言うファイル(秘密鍵)で
認証します。
では、公開鍵認証で接続したいサーバーが複数ある場合、
一つのファイルに秘密鍵をまとめておけないので、これを使い分ける方法がいくつかあります。
1. ssh コマンドのオプションで指定する
例えば、host-A の認証時に使用する秘密鍵がホームディレクトリ以下の .ssh/id_ras_host-A と
言うファイルをして保存されている場合、以下のように -i オプションを指定して、
接続することができます。
# ssh -i ~/.ssh/id_rsa_host-A user@host-A
これが基本の方法。ですが、これがめんどくさいので他にないかという話。
2. config ファイルに記載して使い分ける
ホームディレクトリ以下に .ssh/config ファイルを作成して、以下のように記載します。
Host host-A
Hostname 192.168.0.1
port 22
User user
IdentityFile ~/.ssh/id_rsa_host-A
Host host-B
Hostname 192.168.0.2
port 10022
User admin
IdentityFile ~/.ssh/id_rsa_host-B
このファイルを用意しておくと単に
# ssh host-A
とするだけで、秘密鍵を切り替えて接続してくれます。
port でポート番号や、User でユーザー名も指定しておけます。
3. 秘密鍵ファイル名だけ列挙した config ファイルを作る
これが一番横着な方法。
ホームディレクトリ以下の .ssh/config ファイルに、
以下のような秘密鍵ファイル名だけ列挙したファイルを作ります。
IdentityFile ~/.ssh/id_rsa_host-A
IdentityFile ~/.ssh/id_rsa_host-B
これで秘密鍵が一個しかなかったときのように接続にいくと、
相手によって秘密鍵を使い分けてくれます。
きれいにやるならもちろん 2. の方法でしょうね。
私は横着なんで 3. の方法を使っています。
将来的に管理するサーバーがもっと増えたら…
ちゃんと config ファイル作ります (_ _;>
そのときに備えた備忘録でした m(_ _)m