$ ssh -o ServerAliveInterval=3 -N -L 22222:gitosis-server:22 user@firewall.domain.com这样我就可以通过ssh到localhost:22222并最终进入防火墙后面的gitosis服务器。
我创建了一个本地id_rsa.pub文件,将其复制到运行Centos5的gitosis服务器中,并使用以下命令将其导入到gitosis中...
# sudo -H -u gitosis gitosis-init它成功了,因为我在/var/lib/gitosis/.ssh/authorized_keys中看到了公钥。
回到我的Macbook上,我设置了一个~/.ssh/config文件,其中包含以下内容...
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:有关在防火墙后面的gitosis服务器上获取git工作的任何想法吗?
感谢,Matt
编辑-添加来自SSH尝试的调试信息
我执行了这个命令,'ssh -vvv gitosis@gitosis-server'。我得到一些调试信息,它似乎不喜欢我的Identity。
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: publickeydebug1:提供公钥:/Users/USER/.ssh/id_rsa.gitosis debug3:发送公钥测试 debug2:我们发送了一个公钥数据包,等待回复 debug1:可以继续进行的验证:publickey,gssapi-with-mic,password debug2:我们没有发送数据包,禁用此方法 debug3:查找身份验证方法 password debug3:剩余首选项:,password debug3:启用的身份验证方法 password debug1:下一个身份验证方法:password gitosis@localhost's password:
EDIT 2
好吧,肯定是有问题的密钥。我再次仔细检查了所有的密钥,发现 gitosis-server 在 authorized_keys 文件中持有一个不良的密钥。
debug1:对于用户gitosis,服务为ssh-connection,方法为none的用户认证请求 debug1:尝试0次失败0次 debug1:PAM:为“gitosis”初始化 debug1:PAM:将PAM_RHOST设置为“firewall.domain.com” debug1:PAM:将PAM_TTY设置为“ssh” debug1:对于用户gitosis,服务为ssh-connection,方法为publickey的用户认证请求 debug1:尝试1次失败1次 debug1:测试pkalg/pkblob是否可接受 debug1:临时使用uid:102/103(e=0/0) debug1:尝试公钥文件/var/lib/gitosis/.ssh/authorized_keys debug1:恢复uid:0/0 debug1:临时使用uid:102/103(e=0/0) debug1:尝试公钥文件/var/lib/gitosis/.ssh/authorized_keys2 debug1:恢复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一直记得我放在那里的第一个密钥....而且不允许我将其更改为更正的密钥。
很令人沮丧...
Matt