我正在编写并发布我在最近有关 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
注意:使该文件可执行
这时候我就可以访问我的机器了!