与 git 的 ssh 连接失败
Posted
技术标签:
【中文标题】与 git 的 ssh 连接失败【英文标题】:ssh connection to git failing 【发布时间】:2013-07-18 19:18:43 【问题描述】:我打开了一些我之前问过的问题,但现在问题似乎与ssh
非常相关。
-
我已经在
/home/myuser/gitlab
中安装了Gitlab。
我创建了一个代表test
按照说明,我添加了一个远程git@localhost:root/testing.git
(Gitlab
的服务器在端口 3000 上运行)
现在,当我尝试推送时,我收到以下错误消息:
$ git push -u origin master
ssh: Could not resolve hostname mylocalhost: nodename nor servname provided, or not known
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
现在,我发现我的 ssh 连接有问题。这是我的/home/myhome/.ssh/config
文件
Host mylocalhost
Hostname localhost
PORT 3000
User git
IdentityFile /home/myuser/.ssh/id_rsa.pub
当我运行ssh mylocalhost
时,我收到了这条消息
ssh_exchange_identification: Connection closed by remote host
在详细模式下,似乎在正确的端口上建立了连接,但进程在此处失败debug1: ssh_exchange_identification: HTTP/1.1 400 Bad Request
。
我尝试更新我的/System/Library/LaunchDaemons/ssh.plist
(我正在使用OSX
)以转发端口监听3000
,但随后Gitlab
Webrick
Rails
服务器将不再运行。 l 试图改变git remote set-url origin mylocalhost:testing.git
【问题讨论】:
git remote add with other ssh port的可能重复 【参考方案1】:Gitlab 的 HTTP 接口可能在端口 3000 上运行,但 SSH 没有运行在那里将存储库推送到。
ssh: connect to host localhost port 22: Connection refused
的消息意味着 SSH 客户端无法连接到端口 22 上的 localhost
的 SSH 服务器。我会确保您已经 installed gitlab correctly 并且 Gitlab 运行正常。还要确保 ssh 服务器正在运行并且能够接受端口 22 上的连接。
【讨论】:
哦,对不起,我已经更新了我的帖子,错误信息现在不一样了【参考方案2】:如果你使用完全指定的 url,你就不能希望使用 3000 端口
git@localhost:root/testing.git
作为I have explained to you before:
ssh 配置文件的想法是定义一个条目“
foobar
”,它将设置正确的服务器名称(Hostname
)、ssh 私钥(IdentityFile
)以及 ssh 会话所在的用户已打开。 这将允许执行“ssh foobar
”(无需输入git@xxx
,并且使用非标准的公钥/私钥文件)。 您可以根据需要定义任意数量的条目,从而允许您使用不同的用户和密钥。
所以你不能用git@xxx
定义原点。您必须输入:
git remote add origin mylocalhost:testing.git
或者,如果 origin 已经定义,你需要改变它的 url:
git remote set-url origin mylocalhost:testing.git
(没有'root/
'你没有在gitlab repo前面指定任何路径:gitlab会推导出repo的完整路径)
但您需要确定您的 sshd 从端口 3000 开始,并且 gitlab.yml
包含该端口号。
ssh: Could not resolve hostname mylocalhost: nodename nor servname provided, or not known
这意味着 ssh 找不到 ~/.ssh/config
,其中包含 mylocalhost
条目。
确保该文件存在。
你的previous question输入~/.git/config
,和ssh无关。
【讨论】:
对不起,我有一个复制粘贴pb,错误信息不再相同。事实上,当我按照此处的说明更改sshd
端口时:serverfault.com/questions/18761/…,我的Webrick
Rails
服务器将不再运行...
当然我有(我也验证sudo
用户可以看到它)。这是主机 mylocalhost 主机名 localhost PORT 3000 用户 git IdentityFile /home/myuser/.ssh/id_rsa.pub` 顺便说一句,当我启动ssh -v mylocalhost
时,与右侧的HOSTNAME
和右侧的@987654345 建立了连接@
@Newben git remote -v
在您尝试推送到原点的存储库中返回什么?而在 gitlab 方面,sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
是否成功完成?
第一个请求的结果是'origin mylocalhost:testing.git (fetch) origin mylocalhost:testing.git (push)' 第二个成功完成
其实我有.ssh
config
文件在/home/myhome/
,但是GitLab
在/home/myuser
下运行。我应该在/home/myuser
下添加.ssh
config
文件吗?【参考方案3】:
最后,我发现了问题所在。我必须正确设置~/.ssh/config
文件
Host mylocalhost
Hostname localhost
//I deleted a line specifying the PORT to 3000
User git
IdentityFile /home/myuser/.ssh/id_rsa //It was previously set to /home/myuser/.ssh/id_rsa.pub
然后我重新安装了一个密钥,但我仍然遇到了一些问题。最后,将文件 /home/myuser/.ssh/id_rsa
的 perm 设置为 644,它工作得很好。有关信息,我发现在网络上搜索某些设置可以使用 700
或 600
chmod 烫发,但对我来说 644
成功了
【讨论】:
听起来不错。我之前写过关于 ssh 文件的权限:***.com/a/3712619/6309 感谢非常有趣!以上是关于与 git 的 ssh 连接失败的主要内容,如果未能解决你的问题,请参考以下文章
ssh授权成功连接git@github.com后git命令授权失败
使用 ssh 连接的 git clone 失败“连接由 <server_IP> 端口 7999 重置”
Git学习解决升级Git版本为2.36.1之后,AS弹出SSH Password Login窗口,并且Git连接远程仓库失败的问题
Git学习解决升级Git版本为2.36.1之后,AS弹出SSH Password Login窗口,并且Git连接远程仓库失败的问题