无法通过 SSH 连接到远程计算机,但能够 ping - VPNC

无法通过 SSH 连接到远程计算机,但能够 ping - VPNC

我正在编写并发布我在最近有关 VScode 远程服务器、ssh 和 VPNC 的问题中发现的解决方案。是的,我浪费了很多时间,希望能节省你的时间。

问题

我必须更改 VPN 客户端,使用默认的 ubuntu VPN 客户端 cisco 兼容 (vpnc)。设置 VPN 后,我无法访问远程 SSH 计算机。不过,我能够 ping 通机器。

答案1

用 调试了一下后ssh -v ...,我遇到了这个错误:

expecting SSH2_MSG_KEX_ECDH_REPLY 

为了解决这个问题(其他链接),在/etc/ssh/ssh_config编辑下一行:

#   MACs hmac-md5,hmac-sha1,[email protected],hmac-ripemd160
MACs hmac-sha1

好的。通过终端的 SSH 现在应该可以正常工作了。

之后,我尝试通过远程机器打开Vscode,但收到以下错误:

Remote-SSH hangs on "Setting up SSH Host <remote> (details) Initializing VS Code Server"

它基本上无限挂起,一段时间后返回连接超时。

查看此站点上的每个答案和帖子后,我怀疑该问题与 MTU 有关,因为我能够查看终端并看到连接已建立。另外,我.vscode_server从远程计算机上删除了,因此,我知道我必须将可执行文件从主机上传到远程。

为了确认 MTU 问题,我运行以下命令:

scp file_large user@host

结果?我一运行命令,复制就停止了。现在,MTU 问题已基本得到证实。

修复 MTU 问题

为了测试可用的最大 MTU 大小,我使用 ping 命令对服务器进行 ping 操作:

ping -M do -s 1500 remote_ip

降低 MTU 大小(在本例中为 1500),直到命令不返回

 ping: local error: message too long, mtu=1500

找到 MTU 大小(我的是 1370)后,我更改 VPN 隧道名称的 MTU:

sudo ifconfig your_tunnel_name mtu 1370 up

并测试 scp 命令运行良好。不幸的是,这个命令不是永久的,所以我们必须使它永久与:

下创建一个文件/etc/network/if-up.d

#!/bin/sh

if [ "$IFACE" = "your_tunnel_name" ]; then
    sudo ifconfig your_tunnel_name mtu 1300
fi

注意:使该文件可执行

这时候我就可以访问我的机器了!

相关内容