如何解决SSH克隆Gitlab连接到主机HOSTNAME端口22:连接超时
我目前正在尝试将一个仓库从Gitlabs克隆到我的Google虚拟机。 我通过SSH进入我的VM,然后尝试通过SSH克隆Gitlab存储库。 我收到以下错误:
git clone git@domain:name/project.git
Cloning into 'project'...
ssh: connect to host domain port 22: Connection timed out
fatal: Could not read from remote repository.
我已将我的公共ssh密钥复制到gitlabs.com/profile/keys。我不确定在不识别凭据的情况下是否会产生连接超时。凭据是正确的。
我最初的想法是,虚拟机使用端口22进行克隆,而我也使用22 ssh进入虚拟机,因此该端口正在使用中且未在监听。我认为在vm上运行以下命令所产生的这些结果表明:
sudo lsof -i:22 ## see a specific port such as 22 ##
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 482 root 3u IPv4 13498 0t0 TCP *:ssh (LISTEN)
sshd 482 root 4u IPv6 13509 0t0 TCP *:ssh (LISTEN)
sshd 15101 root 3u IPv4 88752 0t0 TCP vm-csc362.c.databasesystems-287719.internal:ssh->externalip:20470 (ESTABLISHED)
sshd 15119 ming 3u IPv4 88752 0t0 TCP vm-csc362.c.databasesystems-287719.internal:ssh->externalip:20470 (ESTABLISHED)
这说明已建立。
https://stackoverflow.com/questions/988424/lsof-connection-established#:~:text=lsof%20%2Di%20only%20shows%20you,or%20still%20attempting%20to%20authenticate.&text=The%20'ESTABLISHED'%20means%20the%20TCP,sees%20any%20data%20at%20all。
lsof -i
仅显示活动的tcp连接。因此,它不会告诉您是否已登录或仍在尝试进行身份验证。 ESTABLISHED
表示已建立TCP连接,即已在TCP / IP级别上执行了握手。在ssh进程完全看不到任何数据之前,这是必需的。
我最终将端口更改为2222(尽管在端口2222上运行上述命令并重新启动服务并更新防火墙以允许该端口时,似乎没有检测到该端口),所以我将它们改了回去。 ssh还会根据这些结果在端口22上进行侦听。我认为我以前认为端口被阻塞是错误的。
会不会碰巧知道发生了什么事?
我阅读了这篇帖子,其中讨论了可能发生的情况:https://unix.stackexchange.com/questions/229431/why-are-all-my-ssh-attempts-failing-due-to-timeout。 您正在该计算机上运行SSH服务器,并且该服务器确实使用了您尝试连接的端口,但是该计算机具有不允许您连接的防火墙。您需要弄清楚如何更改防火墙,或者可能需要从其他主机进行SSH允许进入。
关于防火墙的说明,我尝试过这些以允许端口:
sudo ufw allow 2222/tcp
sudo ufw allow 22/tcp
我很确定已经允许使用22,但是我不是专家,所以我做到了。
我没有成功。
解决方法
如果您要以何种方式克隆您的存储库,则可以用https
而不是ssh
克隆
类似这样的东西:
$ git clone https://gitlab-ci-token:$GITLAB_TOKEN@domain/name/project.git
-其中GITLAB_TOKEN
是您的personal access token的环境变量(具有读取回购权限)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。