web-dev-qa-db-ja.com

別のユーザーとのSSHキー認証

いくつかの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ユーザーの秘密鍵が使用されていますか?

秘密鍵をコピーせずにこれを行う方法はありませんか?そうは思いませんが、できれば秘密鍵をコピーするのは避けたいと思います。

6
Wade Williams

ホストBの~/.ssh/authorized_keysファイルに、共有アカウントにアクセスするすべてのユーザーの公開鍵を入力する必要があります。クライアントのみがユーザーの秘密鍵を必要とします。サーバーは、特定のアカウントへの接続が許可されている公開鍵のみを知っている必要があります。

ユーザーが秘密鍵を共有したり(よく知られているVagrant秘密鍵は例示的な例外です)、ユーザーの秘密鍵をサーバーに配置したりする必要はほとんどありません。各秘密鍵は、各ユーザーに固有であり、クライアントマシンに残しておく必要があります。このベストプラクティスを無視しても、共有ユーザーの秘密鍵をサーバーに配置する必要はありません。秘密鍵のコピーを、その鍵を使用して共有アカウントに接続するすべてのユーザーに配布する必要があります。

4
CodeGnome

ラップトップからホストAにSSHで接続する場合、秘密鍵をローカルに保存し、エージェント転送(ssh -A Host_a)を使用できます。

1
chx

ホスト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つ)に複数の公開鍵を設定し、複数のリモートホストに同じ公開鍵を使用できます。複数のマシンで同じ秘密鍵を使用することもできますが、私はそれを悪い習慣と呼んでいます。

1
user16115