linux - 通过另一个用户建立隧道 ssh

标签 linux ssh gitolite su ssh-tunnel

注意:在电子邮件的第二部分,我将解释我是如何遇到这个问题的,即通过 gitolite。但问题是 ssh 问题而不是 gitolite 问题。尽管如此,我还是添加了 gitolite 标签,以防有人针对特定情况有临时解决方案。

这是一般问题。

我有一个有两个用户的服务器,alicebobalice 可以通过 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.pubid_rsa.bob
  • 使用 ssh -i/home/alice/.ssh/id_rsa.bob bob@serverbob 打开一个 ssh session (或使用 .ssh/config file )

不要忘记阅读:

提醒:对 gitolite 的任何使用总是通过 gitgitolite 用户完成的,绝不能作为“alice”或“bob”。

关于linux - 通过另一个用户建立隧道 ssh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37471193/

相关文章:

Linux - 如何在 X Windows 之外为触摸屏编程

linux - 隐藏/编译 ssh key ,因此它不能在公共(public)脚本之外使用

docker - 使用 SSH 服务器设置 Docker 容器?

gitolite 允许未经授权的用户

linux - 使用 BusyBox 版本的 netcat 监听 tcp 端口

linux - 如何通过 RDP 访问 Azure Linux 虚拟机

git - 如何知道 Gitolite 版本?

git - 在推送通知邮件中添加 git diff

linux - 购买专用的 Linux 服务器安全吗?

linux从现有的公钥创建新的私钥