最近训练模型的算力要求不断增加,但是实验室已经放不下没钱买新的GPU了,于是目光瞄向算力市场。AutoDL的平价GPU真难抢啊,好不容易抢到,花了两天部署好开始运行,却发现它频繁断连。这个断连现象还很鸡贼,要么就几分钟断连一次,要么假装工作1小时后给你断掉。SSH一旦断连,本地的VSCode无法联系到远端,远端的GPU就开始摸鱼(看实例监控发现的),GPU计费还不停止。真是气死了,100块的算力效果直接砍掉一大半,总有什么办法解决这个吧?
配置~/.ssh/config文件
这篇文章讲的是修改SSH连接配置的问题,于是我在远端的config
文件下加入了这段参数:
Host *
# 每隔5秒自动发送一个空的请求以保持连接
ServerAliveInterval 60
但没解决问题,也许是应该在两端的服务器添加这些配置:
Host *
# 断开时重试连接的次数
ServerAliveCountMax 5
# 每隔5秒自动发送一个空的请求以保持连接
ServerAliveInterval 60
没办法的朋友可以试试。
使用Git的SSH
根据这篇文章更改了系统环境变量后,本地用的SSH客户端确实改变了,但是重启SSH终端后,依然断连。
VSCode vscode-server版本问题
这篇文章说的是两端服务器上的VSCode版本不一致的问题,我查看了VSCode的Remote插件的输出窗口,远端似乎没在下VSCode server,并且我重装VSCode后也没解决问题。
解决:使用SSH密钥认证
ChatGPT告诉我可以用SSH密钥认证,虽然每次换服务器的时候都需要设置一遍密钥认证,但至少不会断连了……
- 生成 SSH 密钥对:
使用以下命令生成 SSH 密钥对(如果尚未生成):
ssh-keygen -t rsa -b 4096
此时命令行就会提示你输入密钥的名称,以及认证口令。如果你对安全要求不高,可以将口令设置为空,这样就可以像我一样免密码登录。口令非空的情况下,是否可以实现免密登录,我还没试过。
由此将在.ssh 文件夹中生成两个文件:id_rsa(私钥)和id_rsa.pub(公钥)。 - 使用命令
cat ~/.ssh/id_rsa.pub
就可以获取刚刚创建的公钥了:
- 将公钥添加到远程服务器:
接下来将公钥内容添加到远程服务器上的~/.ssh/authorized_keys
文件中,如果不存在该文件,可以手动创建。如图所示:
现在就可以实现输入ssh命令的免密登录了,再也不用守着VSCode的密码输出框了!