虚拟机配置
网络配置
以virtualbox为例,在网络新增加一块网卡,然后连接方式选为仅主机网络
然后进入虚拟机查看网络
$ ifconfig
将这里的网络与主机VirtualBox Host-Only Network显卡的网络进行对比,如果前三位一样,就可以使用,如果前三位不一样,就手动更改网络,(在ubuntu的网络设置里,将网络改为手动,然后修改)
这里我们的ip地址符合要求就不用修改了,然后接下来在主机中ping一下这个地址,看一下连通性
可以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配置成功
至此 虚拟机ssh配置完毕
配置Vscode
首先要在Vscode里安装Remote-ssh插件
这里安装Remote-Development
插件即可,这个插件会安装其他所需插件
然后按ctrl
+ shift
+ p
,选择如下选项
然后添加ssh host
按照如下格式填写即可,这里主机名可以随便填,主要是用于区分不同的远程连接
填写完毕后,再次进入刚才的界面,尝试连接即可
配置免密连接
上面的连接还需要手动输入密码,我们可以用如下方法通过秘钥的形式免密连接
首先用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的配置过程,以及插件等等,可以试着将插件删除重装或者恢复插件默认配置
这里记录一下我遇到的问题
这个问题需要在设置中,搜索remote.SSH.useLocalServer ,然后取消勾选即可