我尝试将远程地址添加到分支,但在尝试获取或执行git ls-remote
时,权限被拒绝:
myuser@22.22.22.222: Permission denied (publickey).
fatal: Could not read from remote repository.
所以我想知道如何解决这个问题?我试过使用常规命令行和Git bash。
当我尝试不同的存储库和服务器时,它工作正常,以相同的方式与root用户连接:
git remote add prod ssh://root@11.111.11.11:22/myfolder/gittest.git
成功消息为:From ssh://root@22.222.22.22:22/myfolder/gittest.git
在有问题的服务器上,用户可以访问,我可以ssh没有问题,我同时指定一个键:
ssh -i .ssh/mykey.pem myuser@22.22.22.222
当我尝试将遥控器添加到服务器时,我执行以下操作:
git remote add prod ssh://myuser@22.222.22.22:22/myfolder/gittest.git
但是它需要.pem
文件,所以我在.ssh/config
中指定了它:
Host theserver
HostName 22.22.22.222
IdentityFile ~/.ssh/myfile.pem
Port 22
我如何验证.pem
文件是否被读取?如果我从config
中删除了文本,是否没有关于“缺少密钥”或任何错误?
文件夹存在于服务器上:/myfolder/gittest.git
(myfolder位于根目录)。我也尝试将repo移到不同的位置,将它移到用户的子目录中。但还是出现了同样的错误。
那么,我该如何找出问题所在呢?
如果它有任何用处,当我检查服务器上的用户时:id myuser
我得到:
uid=1000(myuser) gid=1000(myuser) groups=1000(myuser),4(adm),20(dialout),24(cdrom),
25(floppy),27(sudo),
29(audio),30(dip),33(www-data),44(video),46(plugdev),119(netdev),120(lxd)
更新日期:
我更新了配置,添加了User
和IdentitiesOnly
,并将远程地址更改为:
git remote add prod theserver:/myfolder/gittest.git
验证是否已读取配置文件
如果我从.ssh
文件夹中删除配置文件,然后执行git ls-remote
,它会显示Could not resolve hostname theserver
,因此这意味着它在.ssh
中时被找到。
验证连接
在我的另一个 * 工作 * 例子中,如果我从.ssh文件夹中删除密钥并执行git ls-remote
,它会显示The authenticity of host '11.111.11.11' can't be established.
(依此类推)-因此,这似乎验证了我已经建立了连接,但尚未进行身份验证。
但在有问题的服务器上,git ls-remote
只给出:
ssh: connect to host 22.22.22.222 port 22: Connection timed out
fatal: Could not read from remote repository.
如果我把config中的IP地址完全改错了,也会出现同样的情况。所以这意味着它和密钥无关?我不确定它是否正确连接到了IP地址。但是我可以用正常的ssh访问。
更新:已解决
我的奇怪的情况与VPN有关。我必须激活VPN,因为这是SSH和服务器所需要的。然后它就工作了。(使用这种方式连接配置:(一月十七日)
2条答案
按热度按时间ugmeyewa1#
你已经在你的配置中设置了(大部分)正确的主机别名。你的URL只需要引用它。所以按照你的定义定义
theserver
,但是也包括用户名。现在使用以下配置
git
当尝试连接到
theserver
时,SSH将查找具有该名称的Host
条目。它 * 不会 * 执行的操作是获取ssh://myuser@22.222.22.22:22/myfolder/gittest.git
并查找具有相同地址的Host
块。pxyaymoc2#
在
.ssh/config
中使用IdentitiesOnly yes
,如下所示否则,将尝试默认的
~/.ssh/id_rsa