场景
更换了新服务器进行开发,算力实例需要通过网关访问的情况下,使用ssh隧道以及更改ssh config可以隐藏这个事实,让原有的vscode远程开发透明地使用新实例
为什么
与本地开发环境无缝集成:使用 VSCode 远程开发功能,你可以直接在本地编辑、调试、运行远程服务器上的代码,而无需手动同步代码或在本地安装复杂的依赖环境。
绕过防火墙:通过 SSH 隧道,你可以绕过防火墙或其他网络限制,安全地访问公司内部的开发服务器,尤其在需要从外部网络访问内部资源时非常方便。
网络透明性:使用 SSH 隧道和跳板服务器,你不需要在开发过程中考虑不同网络配置的复杂性。通过隧道连接,所有通信对你来说都是透明的。
远程文件系统挂载:VSCode 通过 SSH 连接到远程服务器后,允许你直接在本地挂载远程文件系统,进行文件编辑和操作,像操作本地文件一样方便。
一体化工具集成:VSCode 的 Remote - SSH 插件提供了良好的工具集成,如远程终端、调试器、版本控制等,提升了开发效率。
坑
本地检测到远程主机密钥不一致
.ssh\known_hosts 会保存一个 config 中 host 的对应信息,如果光更改 config 中对应 host 的 ip 端口等而不改变名字,那么 ssh 会继续认为还是原主机,但是识别到了一台新机器,会报错
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
此时只要删除 .ssh\known_hosts 中对应原来主机的Ip及端口号即可。
跳板机通过密码链接
没错,IT人员让跳板机只验证密码,这个时候可以使用 sshpass 等工具自动化隧道创建
sshpass -p 'password' ssh -fCNL local_map_port:host_ip:host_port jumpserver
此时访问 local_host : local_map_port 既可以透明地访问实例服务器
记得在新服务器上配置你的ssh公钥
Permission denied, please try again
最后一步,新服务器还不认识你的私钥,将它的公钥版本添加在 .ssh/authorized_keys 中,完成这一切