假设以下设置:
- 用户
bob
在他的工作站上本地工作foo
。 - 用户
alice
在她的工作站上本地工作bar
。 - 用户可以通过存储在 中的密钥
bob
对服务器进行 ssh 访问。baz:22
bob@foo:.ssh/id_rsa
- 用户
alice
可以通过 ssh 访问bob
工作站foo:22
,但不能访问服务器baz
。
有没有办法让bob
sshbaz
共享他的会话(通过端口转发?)或密钥(通过ssh-agent
转发?),以便alice
可以baz
从bar
via foo
(假设bob
的身份打开foo
)访问?
附录:
还有一些我应该澄清的想法:
bob
不想alice
知道他的密码bob
不希望alice
能够继续运行rm -rf /home/bob
(foo
但baz
显然这会很好)。
正如@mukesh-sai-kumar所建议的那样,一个人可以登录(作为?)并从那里使用共享密钥。alice
foo
bob
ssh
到目前为止,我能看到的最佳方法是为 on 创建一个新的密钥对alice
,bar
允许打开公钥并通过文件中的选项foo
自动运行。ssh bob@baz
command="ssh [...]"
authorized_keys
这将允许设置实际使用新的密钥对 viassh baz
并使用此特定密钥将登录转发到via (授权的密钥但仅限于呼叫)。bar
ssh bob@foo
alice@bar:.ssh/config
bob@foo
bob@baz
bob@foo:.ssh/authorized_keys
alice
command
ssh baz
这样,两个新的约束就会得到满足,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
需要与 由from (via ?)bob
发起的会话共享。ssh
alice
ssh-agent