与 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.gitGitlab 的服务器在端口 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,但随后GitlabWebrickRails 服务器将不再运行。 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)' 第二个成功完成 其实我有.sshconfig文件在/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,它工作得很好。有关信息,我发现在网络上搜索某些设置可以使用 700600 chmod 烫发,但对我来说 644 成功了

【讨论】:

听起来不错。我之前写过关于 ssh 文件的权限:***.com/a/3712619/6309 感谢非常有趣!

以上是关于与 git 的 ssh 连接失败的主要内容,如果未能解决你的问题,请参考以下文章

ssh授权成功连接git@github.com后git命令授权失败

使用 ssh 连接的 git clone 失败“连接由 <server_IP> 端口 7999 重置”

cPanel 中的 GIT 存储库连接失败

Git学习解决升级Git版本为2.36.1之后,AS弹出SSH Password Login窗口,并且Git连接远程仓库失败的问题

Git学习解决升级Git版本为2.36.1之后,AS弹出SSH Password Login窗口,并且Git连接远程仓库失败的问题

与 Heroku 帐户的 SSH 连接失败