回避策:ネストされたSSHセッション。

回避策:ネストされたSSHセッション。

次の設定を想定します。

  1. ユーザーはbob自分のワークステーションでローカルで作業していますfoo
  2. ユーザーはalice自分のワークステーションでローカルで作業していますbar
  3. ユーザーはに保存されたキーを使用してbobサーバーにSSH経由で接続できます。baz:22bob@foo:.ssh/id_rsa
  4. ユーザーはaliceSSH経由でワークステーションに接続できますが、サーバーには接続できません。bobfoo:22baz

どのような方法がありますか?bobsshがbaz自分のセッション(ポート転送を介して?)またはキー(ssh-agent転送を介して?)を共有するためにアクセスalice可能bazbarパスfoobobアイデンティティはと仮定foo


付録:

もっと明確にするべき考えは次のとおりです。

  1. bobaliceその人のパスワードを知りたくない
  2. bobalice走り続けたくないrm -rf /home/bobfooしかしbaz明らかに大丈夫です)。

〜のように提案渡す@mukesh-sai-kumar、人々はそこからaliceログインしてfoo(例えばbob?)ssh共有秘密を使用することができます。

aliceこれまで私が見ることができる最善の方法は、onのための新しいキーペアを生成して、公開キーがファイルのオプションを介してbar自動的fooに開いて実行されるようにすることです。ssh bob@bazcommand="ssh [...]"authorized_keys

これにより、設定でssh baz実際に新しいキーペアをbar使用し、この特定のキーを使用してログインを次に転送できます(認証されたキーですが通話に制限されます)。ssh bob@fooalice@bar:.ssh/configbob@foobob@bazbob@foo:.ssh/authorized_keysalicecommandssh baz

このように、2つの新しい制約が満たされ、仮想のalice対話型セッションで見られるように、何も表示されません。

[alice@foo:~] (1) $ hostname
foo    
[alice@foo:~] (2) $ whoami
alice
[alice@foo:~] (3) $ ssh baz
[bob@baz:~] (1) $ hostname
baz    
[bob@baz:~] (2) $ whoami
bob
[bob@baz:~] (3) $ exit
[alice@foo:~] (4) $ hostname
foo    
[alice@foo:~] (5) $ whoami
alice
[alice@foo:~] (6) $

残りの唯一の問題は、bobSSHキーをfoo他の人と共有する必要があることです。 bobsshセッションは次から始まりました。alice(通過するssh-agent?)

ベストアンサー1

.ssh/authorized_keysAliceは自分の公開鍵をBobに提供でき、BobはAliceがBobのワークステーションで(Bobとして)SSHセッションを開始できるようにする行を自分のファイルに追加できますfoo。このcommand=オプションを使用すると、BobはAliceのキーが対話型シェルに付与されるのを制限し、代わりにbazBobがローカルにアクセスできるキーを使用してBobのネストされたSSH接続に付与できますbar

command="ssh -I .ssh/id_rsa bob@baz:22" ssh-rsa AAA...== alice@whatever

または、より多くの制約オプション(など - AUTHORIZED_KEYSファイル形式のマニュアルページセクションを参照no-port-forwarding)を含めることもできます。from=sshd

Aliceが自分の秘密鍵を使用して実行および認証すると、Bobのワークステーションの中間セッションを制御せずにBobのワークステーションのsshセッションにssh bob@bar接続します。barbaz

(ロギング、セキュリティ監査)の観点からは、bazAliceが開始したトンネル接続とBobが自分のワークステーションで開始した「一般」接続との間に違いはありません。これはあなたが要求したものかもしれませんが、望むものではないかもしれません。

保護されたキーをAliceのセッションで使用できるようにするには、環境変数をSSH_AUTH_SOCKBobが自分のセッションに使用するパスに明示的に設定し(アイテムをauthorized_keysに変更command="SSH_AUTH_SOCK=/path/to/bobs/agent_socket ssh bob@baz:22" ssh-rsa AAA...)、パスが変更されたときにパスを更新する必要がないように(通常に/loginログアウトして)))、BobはAliceの代わりに明示的なパスを指定し、特定のssh-agent -a ~/.ssh/agent_for_aliceキーを追加し、SSH_AUTH_SOCK=~/.ssh/agent_for_alice ssh-add ~/.ssh/id_rsaパスワードを入力して専用エージェントを実行できます。

おすすめ記事