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

标签 git ssh firewall gitosis tunnel

我在我的 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 

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

好吧...绝对是一把坏 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/

相关文章:

Linux iptables TRIGGER 目标描述

firebase - 如何在防火墙/代理后面使用 Firebase?

git - 只构建 feature/* 分支

android - 将 repo 与 goldfish Android 内核一起使用

github - 将 www.github.com 添加到 known_hosts 文件的安全/正确方法是什么?

ssh - 如何强制 ssh 从命令行接受新的主机指纹?

javascript - SSH 命令在终端中工作,但在 nodejs/ssh2 中失败

git - 撤销 git update-index --assume-unchanged

git - 如何将 Winmerge 与 Git 扩展一起使用?

java - 如何在安装过程中打开防火墙端口?