我在我的 macbook 上设置了 SSH 隧道,就像这样......
$ ssh -o ServerAliveInterval=3 -N -L 22222:gitosis-server:22 user@firewall.domain.com
所以我可以 ssh 到 localhost:22222 并最终在防火墙后面的 gitosis-server 上。
我创建了一个本地 id_rsa.pub 文件,将其复制到 gitosis 服务器(运行 Centos5),然后使用...将其导入 gitosis
# sudo -H -u gitosis gitosis-init这是成功的,因为我可以在 /var/lib/gitosis/.ssh/authorized_keys 中看到公钥。
回到我的 macbook,我设置了一个 ~/.ssh/config 文件,其中包含以下内容......主机 gitosis-server 主机名本地主机 HostKeyAlias gitosis-server.domain.com 端口 22222所以......我认为这个命令应该工作......
$ git clone gitosis@gitosis-server:gitosis-admin.git然而,当它要求输入密码时,它不会......当公钥应该工作时。
在 /Users/USER/Development/gitrepo/gitosis-admin/.git/ 中初始化空的 Git 存储库 gitosis@localhost 的密码:关于让 git 通过防火墙后的 gitosis 服务器工作的任何想法?
谢谢,
马特
编辑 - 从 SSH 尝试添加调试
我做了这个命令,'ssh -vvv gitosis@gitosis-server'。我得到了一些调试,它似乎不喜欢我的身份。
debug2:键:/Users/USER/.ssh/id_rsa.gitosis (0x1019b0) debug1:可以继续的身份验证:publickey、gssapi-with-mic、password debug3:重新开始,传递了不同的列表 publickey、gssapi-with-mic、password debug3:首选公钥、键盘交互、密码 debug3: authmethod_lookup 公钥 debug3:剩余首选:键盘交互,密码 debug3:authmethod_is_enabled 公钥 debug1:下一个认证方式:publickey debug1:提供公钥:/Users/USER/.ssh/id_rsa.gitosis 调试3:send_pubkey_test debug2:我们发送了一个公钥包,等待回复 debug1:可以继续的身份验证:publickey、gssapi-with-mic、password debug2:我们没有发送数据包,禁用方法 debug3:authmethod_lookup 密码 debug3:剩余首选:,密码 debug3:authmethod_is_enabled 密码 debug1:下一个认证方式:密码 gitosis@localhost 的密码:
编辑 2
好的...肯定是一个坏键。我再次检查了所有的密钥,当然发现 gitosis-server 在 authorized_keys 文件中持有一个错误的密钥。
debug1:用户 gitosis 服务 ssh 连接方法的 userauth-request 无 debug1:尝试 0 次失败 0 debug1: PAM: 为“gitosis”初始化 debug1:PAM:将 PAM_RHOST 设置为“firewall.domain.com” debug1:PAM:将 PAM_TTY 设置为“ssh” debug1: userauth-request 用户 gitosis 服务 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 调试1:restore_uid:0/0 debug1:temporary_use_uid:102/103(e=0/0) debug1:尝试公钥文件 /var/lib/gitosis/.ssh/authorized_keys2 调试1: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 一直记得我放在那里的第一个键......并且不会让我将其更改为更正的键。
令人沮丧...
马特