SSHの鍵認証(暫定)

複数のマシンで相互に鍵認証によりSSHログインする方法というのが意外によくわからなかったので、暫定的にまとめてみました。

鍵の作成にはサーバーマシンAで ssh-keygen コマンドを実行します。下のコンソールのスクリーンショットのように既定値を使用すると、ホームディレクトリの .ssh の下に id_rsa および id_rsa.pub という2つのファイルができあがります。このうち、id_rsa.pub は authorized_keys というファイル名にコピーします。一方、id_rsa をクライアントマシンBの .ssh ディレクトリに配布すればクライアントマシンBからサーバーマシンAへと鍵認証ログインが可能となります。

f:id:S_E_Hyphen:20200209115009j:plain

さて、ここでサーバー・クライアント立場を入れ替えてマシンBで ssh-keygen を実行すると、${HOME}/.ssh/id_rsa が上書きされてしまい ssh 自体実行できなくなってしまいます。どうやら相互ログインしたい場合には既定値のままではダメなようです。

f:id:S_E_Hyphen:20200209115507j:plain

ssh-keygen 実行時には、例えばマシンAでは  id_rsa.A とするなど鍵ファイル名は必ず変更させておく必要があるみたいです。この場合、鍵ファイル名に対応して id_rsa.A.pubという名前のファイルができてしまい煩雑なのですが、このファイルは authorized_keys にリネイムしてしまえばよいようです。

その後、同様にして作成した id_rsa.B および id_rsa.C をマシンAが取得することでマシンAからマシンBやマシンCへとログインすることができるようになります。その際、ssh には -i オプションによって鍵ファイル名を指定してやることが必要となります。

 

# マシンAからマシンBへのログイン
ssh machineB -l user -i /home/user/.ssh/id_rsa.B
# マシンAからマシンCへのログイン
ssh machineC -l user -i /home/user/.ssh/id_rsa.C

 

なぜ既定値の段階で画一的な名前にしているのかとか、なぜ .pub という拡張子でファイルが作成されてしまうのかとか、少し感覚的に理解し難い点が有ります。ひょっとすると間違っている箇所も有るのかも知れませんが、現時点ではこの遣り方で特に不調は無いようです。