次の設定を想定します。
- ユーザーは
bob
自分のワークステーションでローカルで作業していますfoo
。 - ユーザーは
alice
自分のワークステーションでローカルで作業していますbar
。 - ユーザーはに保存されたキーを使用して
bob
サーバーにSSH経由で接続できます。baz:22
bob@foo:.ssh/id_rsa
- ユーザーは
alice
SSH経由でワークステーションに接続できますが、サーバーには接続できません。bob
foo:22
baz
どのような方法がありますか?bob
sshがbaz
自分のセッション(ポート転送を介して?)またはキー(ssh-agent
転送を介して?)を共有するためにアクセスalice
可能baz
bar
パスfoo
(bob
アイデンティティはと仮定foo
)?
付録:
もっと明確にするべき考えは次のとおりです。
bob
alice
その人のパスワードを知りたくないbob
alice
走り続けたくないrm -rf /home/bob
(foo
しかしbaz
明らかに大丈夫です)。
〜のように提案渡す@mukesh-sai-kumar、人々はそこからalice
ログインしてfoo
(例えばbob
?)ssh
共有秘密を使用することができます。
alice
これまで私が見ることができる最善の方法は、onのための新しいキーペアを生成して、公開キーがファイルのオプションを介してbar
自動的foo
に開いて実行されるようにすることです。ssh bob@baz
command="ssh [...]"
authorized_keys
これにより、設定でssh baz
実際に新しいキーペアをbar
使用し、この特定のキーを使用してログインを次に転送できます(認証されたキーですが通話に制限されます)。ssh bob@foo
alice@bar:.ssh/config
bob@foo
bob@baz
bob@foo:.ssh/authorized_keys
alice
command
ssh 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) $
残りの唯一の問題は、bob
SSHキーをfoo
他の人と共有する必要があることです。 bob
ssh
セッションは次から始まりました。alice
(通過するssh-agent
?)。
ベストアンサー1
.ssh/authorized_keys
Aliceは自分の公開鍵をBobに提供でき、BobはAliceがBobのワークステーションで(Bobとして)SSHセッションを開始できるようにする行を自分のファイルに追加できますfoo
。このcommand=
オプションを使用すると、BobはAliceのキーが対話型シェルに付与されるのを制限し、代わりにbaz
Bobがローカルにアクセスできるキーを使用して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
接続します。bar
baz
(ロギング、セキュリティ監査)の観点からは、baz
Aliceが開始したトンネル接続とBobが自分のワークステーションで開始した「一般」接続との間に違いはありません。これはあなたが要求したものかもしれませんが、望むものではないかもしれません。
保護されたキーをAliceのセッションで使用できるようにするには、環境変数をSSH_AUTH_SOCK
Bobが自分のセッションに使用するパスに明示的に設定し(アイテムを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
パスワードを入力して専用エージェントを実行できます。