1

我正在打开一些我之前问过的问题,但现在这个问题似乎与ssh.

  1. 我已经在/home/myuser/gitlab.
  2. 我创建了一个代表test
  3. 按照说明,我添加了一个远程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)以转发端口监听,3000Gitlab Webrick Rails服务器将不再运行。l 试图改变git remote set-url origin mylocalhost:testing.git

4

3 回答 3

0

最后,我弄清楚了问题所在。我必须正确设置~/.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

然后我重新安装了一个密钥,但我仍然遇到了一些问题。最后,将文件的 perm 设置/home/myuser/.ssh/id_rsa为 644,它工作得很好。有关信息,我发现在网上搜索某些设置可以与 a700600chmod perm 一起使用,但对我来说644做到了

于 2013-07-20T18:57:11.807 回答
0

如果您使用的是完全指定的 url,则不能希望使用端口 3000

 git@localhost:root/testing.git

正如我之前向您解释过的

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条目。
确保该文件存在。

之前提出的 问题~/.git/config,与ssh无关。

于 2013-07-19T13:42:02.420 回答
0

Gitlab 的 HTTP 接口可能在端口 3000 上运行,但 SSH 没有在那里运行以将存储库推送到。

的消息ssh: connect to host localhost port 22: Connection refused意味着 SSH 客户端无法连接到localhost端口 22 上的 SSH 服务器。我会确保您已正确安装 gitlab并且 Gitlab 运行正常。还要确保 ssh 服务器正在运行并且能够接受端口 22 上的连接。

于 2013-07-19T13:25:03.510 回答