隧道ssh通过另一个用户

时间:2016-05-26 21:18:39

标签: linux ssh gitolite su ssh-tunnel

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

这是一般性问题。

我的服务器有两个用户,alicebobalice可以通过bob假设su - bob身份,但她不知道bob的密码(无论出于何种原因)。从她的笔记本电脑中,Alice想以bob的形式进入服务器,但由于她没有密码,所以她不能。有没有办法利用她的能力来假设bob的身份来模仿ssh bob@server的行为?在某种程度上,我想通过更改用户身份来隧道 ssh连接。我认为这是一个很长的镜头,我猜ssh不允许这样做。但我想我还是会问。

问题出在哪里:gitolite

我正在尝试使用gitolite。我让服务器管理员设置了gitolite用户,他让我有权在服务器上执行su - gitolite。但是,他没有给我gitolite的密码,并且考虑到当天的时间,服务器管理员已经回家了,所以我必须等到明天才能问他密码。同时,我想找到一个解决方法(如果可能的话),只是为了好玩。

简短的gitolite-ssh交互回顾(据我所知):authorized_keys中的gitolite/.ssh文件有这样的行

# 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

因此,当授权密钥尝试ssh到gitolite的帐户时,整个gitolite机器被激活。实际上,当授权密钥sshs(如何将动词'与ssh'?!?结合)到gitolite的帐户时,gitolite-shell将被执行并接管,仅允许git相关命令。如果您是其授权密钥之一,您可能会问“那么为什么需要gitolite的密码呢?很高兴你问。为了让some_user_name修改gitolite的配置,这还不够添加类似于~gitolite/.ssh/authorized_keys的行; some_user_name需要添加到gitolite的配置文件中,该文件存储在~gitolite/repository/gitolite-admin.git的git存储库中。为了更改此配置文件,需要克隆该repo,修改配置文件,然后推回repo。捕获:允许在gitolite-admin repo中推送修改的用户列在gitolite-admin repo本身......开头,初始化gitolite的用户(在本例中为用户gitolite)是此类配置文件中列出的唯一用户。所以我需要能够以gitolite的形式访问该conf文件,以便在可以更改配置的用户中添加我的用户。一旦我这样做,我就会忘记用户gitolite并像我一样管理gitolite存储库。

1 个答案:

答案 0 :(得分:1)

  

有没有办法利用她的能力来假设bob的身份来模仿ssh bob @ server的行为?

当然:如果Alice可以打开一个shell会话作为bob(su - bob),她可以:

  • 访问/home/bob/.ssh
  • 将他的公钥和私钥复制到/home/alice/.ssh/id_rsa.bob.pubid_rsa.bob
  • 使用bob打开一个ssh会话ssh -i /home/alice/.ssh/id_rsa.bob bob@server(或使用.ssh/config file

别忘了阅读:

提醒:任何使用gitolite的行为总是通过gitgitolite用户完成,而不是像alice'或者' bob'。