注意:在电子邮件的第二部分,我将解释我是如何遇到这个问题的,即通过 gitolite。但问题是 ssh
问题而不是 gitolite
问题。尽管如此,我还是添加了 gitolite 标签,以防有人针对特定情况有临时解决方案。
这是一般问题。
我有一个有两个用户的服务器,alice
和 bob
。 alice
可以通过 su - bob
假设 bob
身份,但她不知道 bob
的密码(无论原因)。爱丽丝想从她的笔记本电脑上以 bob
身份通过 ssh 进入服务器,但她不能,因为她没有他的密码。有没有办法利用她假设 bob
的身份来模仿 ssh bob@server
的行为的能力?在某种程度上,我想通过更改用户身份来隧道 ssh 连接。我认为这是一个远景,我猜 ssh 不允许这样做。但我想我还是会问的。
问题出在哪里:gitolite
我正在尝试使用 gitolite。我让服务器管理员设置 gitolite
用户,他给了我在服务器上执行 su - gitolite
的权力。但是,他没有给我 gitolite
的密码,鉴于当天的时间,服务器管理员已经回家,所以我必须等到明天再问他那个密码。同时,我想找到一个解决方法(如果可能的话),只是为了好玩。
简短的 gitolite-ssh 交互回顾(据我所知):gitolite/.ssh
中的 authorized_keys
文件有这样的行
# gitolite start
command="/usr/share/gitolite3/gitolite-shell some_user_name",no-portforwarding,
no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa SOME_USER_NAME_KEY
# gitolite end
因此,当授权 key 尝试通过 ssh 进入 gitolite
的帐户时,整个 gitolite 机制就会被激活。事实上,当授权 key sshs(你如何将动词“to ssh”结合起来?!?)进入 gitolite
的帐户时,gitolite-shell
被执行并获取结束,只允许 git
相关命令。你可能会问“那么,如果你是 gitolite
的授权 key 之一,为什么还需要它的密码?很高兴你问了。为了让 some_user_name
修改 gitolite 的配置, 只在 ~gitolite/.ssh/authorized_keys
中添加这样一行是不够的; some_user_name
需要添加到 gitolite 的配置文件中,该文件存储在 git 中~gitolite/repository/gitolite-admin.git
中的存储库。为了更改此配置文件,必须克隆该存储库,修改配置文件,然后将存储库推回。捕获:允许在 gitolite-admin
repo 中推送修改的用户在 gitolite-admin
repo 本身中列出......在开始时,初始化 gitolite 的用户(在这种情况下,用户 gitolite
) 是此类配置文件中唯一列出的用户。因此我需要能够以 gitolite
的身份访问该 conf 文件,以便将我的用户添加到其中c的用户更改配置。一旦我这样做了,我就可以忘记用户 gitolite
并像我自己一样管理 gitolite 存储库。
最佳答案
Is there a way to exploit her ability to assume bob's identity to mimic the behavior of ssh bob@server?
当然:如果 Alice 可以作为 bob(使用 su - bob
)打开 shell session ,她可以:
- 访问
/home/bob/.ssh
, - 将他的公钥和私钥复制到
/home/alice/.ssh/id_rsa.bob.pub
和id_rsa.bob
。 - 使用
ssh -i/home/alice/.ssh/id_rsa.bob bob@server
以bob
打开一个 ssh session (或使用.ssh/config
file )
不要忘记阅读:
提醒:对 gitolite 的任何使用总是通过 git
或 gitolite
用户完成的,绝不能作为“alice”或“bob”。
关于linux - 通过另一个用户建立隧道 ssh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37471193/