いくつかのsshキーベースの認証で混乱しています。
私が持っているとしましょう:
Host A:
user tom
.ssh
tom_private_key
tom_public_key
Host B:
user shared
.ssh
shared_private_key
shared_public_key
ホストAからユーザーshared
としてホストBにSSHで接続したいと思います。
shared
ユーザーの秘密鍵をsshディレクトリにコピーしてから、-Iパラメータを使用するか、SSH構成ファイルを設定して、ユーザーshared
としてそのホストにsshしたときにshared
ユーザーの秘密鍵が使用されていますか?
秘密鍵をコピーせずにこれを行う方法はありませんか?そうは思いませんが、できれば秘密鍵をコピーするのは避けたいと思います。
ホストBの~/.ssh/authorized_keys
ファイルに、共有アカウントにアクセスするすべてのユーザーの公開鍵を入力する必要があります。クライアントのみがユーザーの秘密鍵を必要とします。サーバーは、特定のアカウントへの接続が許可されている公開鍵のみを知っている必要があります。
ユーザーが秘密鍵を共有したり(よく知られているVagrant秘密鍵は例示的な例外です)、ユーザーの秘密鍵をサーバーに配置したりする必要はほとんどありません。各秘密鍵は、各ユーザーに固有であり、クライアントマシンに残しておく必要があります。このベストプラクティスを無視しても、共有ユーザーの秘密鍵をサーバーに配置する必要はありません。秘密鍵のコピーを、その鍵を使用して共有アカウントに接続するすべてのユーザーに配布する必要があります。
ラップトップからホストAにSSHで接続する場合、秘密鍵をローカルに保存し、エージェント転送(ssh -A Host_a)を使用できます。
ホストAでこれを行う:
cat ~tom/.ssh/tom_public_key | ssh shared@Host-b 'cat >> .ssh/authorized_keys'
やってみましょう(再びホストAで):
ssh -i ~tom/.ssh/tom_private_key shared@Host-b
最初の行で、ホストAからトムの公開鍵をコピーします(Host-a:~tom/.ssh/tom_public_key
)ホストBを共有ユーザーのauthorized_keys-file(Host-b:~shared/.ssh/authorized_keys
)、パスワードなしでAからBに接続できます(2行目):
Authorized_keysファイル(1行に1つ)に複数の公開鍵を設定し、複数のリモートホストに同じ公開鍵を使用できます。複数のマシンで同じ秘密鍵を使用することもできますが、私はそれを悪い習慣と呼んでいます。