虚拟机配置

网络配置

以virtualbox为例,在网络新增加一块网卡,然后连接方式选为仅主机网络

vscode连接ssh启动docker跑深度学习代码 vscode ssh配置_用户名


然后进入虚拟机查看网络

$ ifconfig

vscode连接ssh启动docker跑深度学习代码 vscode ssh配置_ssh_02


将这里的网络与主机VirtualBox Host-Only Network显卡的网络进行对比,如果前三位一样,就可以使用,如果前三位不一样,就手动更改网络,(在ubuntu的网络设置里,将网络改为手动,然后修改)

vscode连接ssh启动docker跑深度学习代码 vscode ssh配置_vscode_03


这里我们的ip地址符合要求就不用修改了,然后接下来在主机中ping一下这个地址,看一下连通性

vscode连接ssh启动docker跑深度学习代码 vscode ssh配置_远程登录_04


可以ping通,这里网络设置就已经完毕

虚拟机配置ssh

首先,安装ssh

$ sudo apt-get install openssh-server # 安装ssh
$ sudo /etc/init.d/ssh start # 启动ssh
$ sudo systemctl enable ssh # 自动启动ssh

紧接着配置ssh

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup # 备份
$ sudo vim /etc/ssh/sshd_config # 编辑

空白处加入如下配置

# SSH服务器配置文件的一部分
# 下面是每个选项的解释:
# 默认值为22。
Port 22
# SSH可以用于IPv4和IPv6地址族。
AddressFamily any
# SSH服务将侦听所有可用IP地址的连接请求。
ListenAddress 0.0.0.0
# SSH服务将侦听所有可用IPV6地址的连接请求。
ListenAddress ::
# 这将禁用Privilege Separation功能,该功能允许SSH以减少潜在漏洞的特权级别运行。
UsePrivilegeSeparation no
# 允许用户使用密码进行SSH远程登录。
PasswordAuthentication yes
# 允许root用户通过SSH远程登录。
PermitRootLogin yes
# 允许用户名为'xxx'的用户通过SSH远程登录。
AllowUsers xxx # 要把用户名修改为自己的用户名
# 启用SSH使用RSA算法进行身份验证。
RSAAuthentication yes
# 启用SSH使用公钥身份验证。
PubKeyAuthentication yes

修改完毕后重启服务

$ sudo service ssh --full-restart

在windows中断测试ssh连通性
$ ssh -p <端口号> <用户名>@<ip地址> 如下所示,这里的用户名和ip地址要写成上文配置的

$ ssh -p 22 mk@192.168.56.102

出现如图所示的界面,表示ssh配置成功

vscode连接ssh启动docker跑深度学习代码 vscode ssh配置_vscode_05


至此 虚拟机ssh配置完毕

配置Vscode

首先要在Vscode里安装Remote-ssh插件

这里安装Remote-Development插件即可,这个插件会安装其他所需插件

vscode连接ssh启动docker跑深度学习代码 vscode ssh配置_服务器_06


然后按ctrl + shift + p ,选择如下选项

vscode连接ssh启动docker跑深度学习代码 vscode ssh配置_vscode_07

然后添加ssh host

vscode连接ssh启动docker跑深度学习代码 vscode ssh配置_服务器_08


按照如下格式填写即可,这里主机名可以随便填,主要是用于区分不同的远程连接

vscode连接ssh启动docker跑深度学习代码 vscode ssh配置_服务器_09


填写完毕后,再次进入刚才的界面,尝试连接即可

vscode连接ssh启动docker跑深度学习代码 vscode ssh配置_vscode_10

配置免密连接

上面的连接还需要手动输入密码,我们可以用如下方法通过秘钥的形式免密连接
首先用ssh-keygen生成公钥和私钥

$ ssh-keygen -t rsa -C "your_email@example.com"

然后在c:\users\<用户名>\.ssh目录下,找到id_rsa.pub文件,用记事本打开,将里面的内容复制,然后粘贴到~/.ssh/authorized_keys中,这样每次连接就不用输入密码了

常见问题

如果在windows中用终端的ssh连接没有问题的话,然后在vscode中无法连接,就是vscode插件的问题了,这个时候需要排查vscode的配置过程,以及插件等等,可以试着将插件删除重装或者恢复插件默认配置

这里记录一下我遇到的问题

vscode连接ssh启动docker跑深度学习代码 vscode ssh配置_vscode_11


这个问题需要在设置中,搜索remote.SSH.useLocalServer ,然后取消勾选即可

vscode连接ssh启动docker跑深度学习代码 vscode ssh配置_远程登录_12