问题描述
我目前正在尝试将一个仓库从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,但是我不是专家,所以我做到了。
我没有成功。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)