通过SSH隧道连接到gitosis服务器

Mat*_*cel 10 git ssh firewall tunnel gitosis

我的macbook上有一个SSH隧道设置,就像这样......

$ ssh -o ServerAliveInterval=3 -N -L 22222:gitosis-server:22 user@firewall.domain.com

所以我可以ssh到localhost:22222并最终将防火墙后面的gitosis服务器.

我创建了一个本地id_rsa.pub文件,将其复制到gitosis服务器(运行Centos5),然后使用...将其导入gitosis.

# sudo -H -u gitosis gitosis-init 

It was successful as I can see the public key in /var/lib/gitosis/.ssh/authorized_keys.

Back on my macbook I setup a ~/.ssh/config file with the following...

Host gitosis-server
Hostname localhost
HostKeyAlias gitosis-server.domain.com
  Port 22222

所以...我认为这个命令应该有效......

$ git clone gitosis@gitosis-server:gitosis-admin.git

然而,它不会因为它要求输入密码....当公钥应该工作时.

Initialized empty Git repository in /Users/USER/Development/gitrepo/gitosis-admin/.git/
gitosis@localhost's password: 

关于让git工作到防火墙后面的gitosis服务器的任何想法?

谢谢,
马特


编辑 - 从SSH尝试添加调试

我做了这个命令,'ssh -vvv gitosis @ gitosis-server'.我得到了一些调试,它似乎不喜欢我的身份.

debug2: key: /Users/USER/.ssh/id_rsa.gitosis (0x1019b0)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/USER/.ssh/id_rsa.gitosis
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
gitosis@localhost's password: 

编辑2

好的......肯定是坏密钥.我再次检查了所有的密钥,当然发现gitosis-server在authorized_keys文件中持有一个坏密钥.

debug1:用户gitosis服务的userauth-request ssh-connection方法无debug1:尝试0失败0 debug1:PAM:初始化为"gitosis"debug1:PAM:将PAM_RHOST设置为"firewall.domain.com"debug1:PAM:将PAM_TTY设置为"ssh"debug1:用户gitosis服务的userauth-request ssh-connection方法publickey debug1:尝试1次失败1 debug1:测试pkalg/pkblob是否可接受debug1:temporary_use_uid:102/103(e = 0/0)debug1:尝试公开密钥文件/var/lib/gitosis/.ssh/authorized_keys debug1:restore_uid:0/0 debug1:temporary_use_uid:102/103(e = 0/0)debug1:尝试公钥文件/var/lib/gitosis/.ssh/ authorized_keys2 debug1:restore_uid:0/0来自FIRE.WALL.IP.ADDRESS端口52453 ssh2的gitosis失败的公钥

我仔细看了一下gitosis服务器上的authorized_keys文件....这是不正确的.我仔细检查了我从工作站复制到/ tmp的公钥文件,它是正确的,但与authorized_keys中的不同.我删除了服务器上的authorized_keys文件并重新输入'sudo -H -u gitosis gitosis-init </tmp/id_rsa.gitosis.pub'.再次检查authorized_keys文件.....它仍然是错误的.

我通过编辑authorized_keys并添加正确的密钥手动更新它,然后我让它从我的工作站通过隧道工作一两次尝试.然后它像以前一样停止工作.我回到了gitosis服务器上的authorized_keys文件,果然...... gitosis已经将它恢复为无效的旧密钥.

它为什么这样做......恢复到一个糟糕的公钥....即使我尝试使用上面的命令添加它...但未能改变它....然后手动改变它....哪个有效但git然后再回到坏的一个.

这就像gitosis一直记住我放在那里的第一把钥匙......并且不会让我把它改成纠正的钥匙.

令人沮丧的...

马特

Mat*_*cel 4

跟进:

我不知道为什么 gitosis 坚持重用一个坏的公钥。试图强制它获取正确的密钥没有成功。

所以今天我刚刚在我的 CentOS5 机器上删除并重新安装了 gitosis 软件包。

百胜去除gitosis
rm -rf /var/lib/gitosis
百胜安装gitosis
sudo -H -u gitosis gitosis-init < /tmp/id_rsa.gitosis.pub   #正确的密钥

在我的 Mac 上,我通过防火墙 SSH 隧道 localhost:22222 到达 gitosis-server:22。

$ ssh -o ServerAliveInterval=3 -N -L 22222:gitosis-server:22 user@firewall.domain.com

在我的 Mac 上,我创建了 ~/.ssh/config ,如下所示...

主机gitosis服务器
主机名本地主机
IdentityFile ~/.ssh/id_rsa.gitosis
HostKeyAlias gitosis-server.domain.com
  端口 22222

然后...按照本网站上的说明进行操作...

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

...之后的一切... “这里发生了一些很酷的魔法。在本地计算机上运行它:” ...正常工作...除了记住将用户名“git”替换为“gitosis”。

希望所有这些废话对某人有所帮助。也感谢我在这里得到的建议......它有助于缩小问题范围。

马特