我在我的 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-initIt 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
好吧...绝对是一把坏 key 。我再次仔细检查了我所有的 key ,当然发现 gitosis-server 在 authorized_keys 文件中持有一个错误的 key 。
debug1: userauth-request for user gitosis service ssh-connection method 无 debug1: 尝试 0 失败 0 debug1:PAM:正在为“gitosis”初始化 debug1:PAM:将 PAM_RHOST 设置为“firewall.domain.com” debug1:PAM:将 PAM_TTY 设置为“ssh” debug1:userauth-request for user gitosis service ssh-connection method 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
我通过编辑 authorized_keys 并添加正确的 key 来手动更新它,然后我让它从我的工作站通过隧道运行一两次。然后它像以前一样停止工作。我回到 gitosis 服务器上的 authorized_keys 文件,果然......gitosis 已将其恢复为无效的旧 key 。
为什么要这样做......恢复到一个错误的公钥......即使在我尝试使用上面的命令添加它......但未能更改它......然后手动更改它。 ...这有效,但 git 然后又恢复到错误状态。
这就像 gitosis 一直记住我输入的第一个 key ....并且不让我将其更改为正确的 key 。
令人沮丧的...
马特
最佳答案
跟进:
我不确定为什么 gitosis 坚持要重用一个错误的公钥。试图强制它采用正确的 key 是行不通的。
所以今天我刚刚在我的 CentOS5 机器上删除并重新安装了 gitosis 软件包。
yum remove gitosis rm -rf /var/lib/gitosis yum install gitosis sudo -H -u gitosis gitosis-init < /tmp/id_rsa.gitosis.pub #the correct key
在我的 Mac 上,我通过 SSH 隧道 localhost:22222 通过防火墙到 gitosis-server:22。
$ ssh -o ServerAliveInterval=3 -N -L 22222:gitosis-server:22 user@firewall.domain.com
在我的 Mac 上,我创建了如下所示的 ~/.ssh/config...
Host gitosis-server Hostname localhost IdentityFile ~/.ssh/id_rsa.gitosis HostKeyAlias gitosis-server.domain.com Port 22222
然后...按照本网站上的说明...
http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way
......之后的一切...... “这里发生了一些很酷的魔法。在你的本地机器上运行它:”......只是工作......除了记得替换用户名“git”与“gitosis”。
希望所有这些废话对某人有所帮助。也感谢我在这里得到的建议....它有助于缩小问题的范围。
马特
关于git - 通过 SSH 隧道连接到 gitosis 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1264262/