在Win10上使用SSH远程连接Linux搭建VSCode开发环境

一、使用条件

使用VSCode远程开发需要满足一些条件:

  1. 目标主机必须安装SSH客户端并且是Linux 64位系统(树莓派仅支持2b及以上,zero/w不支持因为bcm2835是armv6l架构)
  2. arm架构仅支持RaspbianStrech/9(32位)及以上或Ubuntu18.04(64位)及以上系统
  3. 本地主机仅支持Windows 1803及以上版本并安装官方OpenSSH组件
    Windows10系统版本查看方法:

二、开启Windows10的SSH功能

点击开始菜单->设置->应用->应用和功能->可选功能->添加功能;添加OpenSSH 客户端OpenSSH 服务器

vscode可以连接redis吗 vscode怎么连接ssh远程_vscode可以连接redis吗


在Linux下使用命令开启ssh功能:

sudo apt-get install openssh-server
  • 1

安装成功使用命令后的显示:

vscode可以连接redis吗 vscode怎么连接ssh远程_vscode可以连接redis吗_02

三、测试在Windows下SSH登录Ubuntu

Windows右击开始界面,打开Windows PowerShell

vscode可以连接redis吗 vscode怎么连接ssh远程_客户端_03


使用命令ssh [username]@[ip addr]命令远程登陆,然后输入密码,如图,SSH成功登录ubuntu16系统

vscode可以连接redis吗 vscode怎么连接ssh远程_PowerShell_04

四、使用密钥进行ssh免密登录

ssh使用私钥登录大致步骤是:主机A(客户端)创建公钥私钥,并将公钥复制到主机B(被登陆机)的指定用户下,然后主机A使用保存私钥的用户登录到主机B对应保存公钥的用户。

  1. 在Windows10下生成公钥和私钥
    打开Windows PowerShell使用命令生成即可,-t rsa可以省略,默认就是生成rsa类型的密钥
ssh-keygen -t rsa
  • 1

命令执行后会有提示,输入三次回车即可,执行完成后会在当前用户的.ssh目录下生成两个文件:id_rsa、id_rsa.pub文件,前者是私钥文件,后者是公钥文件(拷贝到其他主机只需要拷贝这个文件的内容)

vscode可以连接redis吗 vscode怎么连接ssh远程_PowerShell_05

vscode可以连接redis吗 vscode怎么连接ssh远程_vscode可以连接redis吗_06

  1. 将公钥复制到被登陆的主机上的 ~/.ssh/authorized_keys 文件中
    拷贝公钥有两种方法,其原理都相同:
    1)、使用 ssh-copy-id 直接拷贝
    如果安装了Git的话,打开Git bash使用 ssh-copy-id 进行拷贝公钥非常方便,只需要指定目标主机和目标主机的用户即可。命令如下:
ssh-copy-id -i ~/.ssh/id_rsa.pub william@192.168.0.106
  • 1

然后依次输入yes和密码即可

vscode可以连接redis吗 vscode怎么连接ssh远程_Windows_07


2)、自己创建文件进行拷贝

如果没有安装Git,好像Windows PowerShell不支持ssh-copy-id命令;

先cd到Windows10的用户下的 .ssh 目录,使用scp命令将authorized_keys文件拷贝到Ubuntu下

scp .\id_rsa.pub william@192.168.0.106:/home/william
  • 1

拷贝时需要输入密码

vscode可以连接redis吗 vscode怎么连接ssh远程_PowerShell_08


然后使用ssh登录Ubuntu在用户目录下创建.ssh文件夹,需要将该目录权限改为700,该目录的权限必须是700才有效,然后将id_rsa.pub文件移动到.ssh目录下,并修改其名称为authorized_keys,修改其权限为600,该文件有规定如果属组其他人出现可写则文件就不会生效

vscode可以连接redis吗 vscode怎么连接ssh远程_vscode可以连接redis吗_09

  1. 我们回到windows10下,使用ssh命令登录,可以看到,不再需要密码了
  2. 解决一个问题
    在使用过程中包括使用putty来SSH连接远程服务器的时候出现一段时间不操作连接断开。
    找到sshd_config配置文件进行编辑:
sudo vim /etc/ssh/sshd_config
  • 1

在其中找到以下配置项目:

#ClientAliveInterval 0
#ClientAliveCountMax 3

如果没有,则在文件后添加,修改或添加成如下所示:

ClientAliveInterval 60
ClientAliveCountMax 3
  • 1
  • 2

ClientAliveInterval 指定了服务器端向客户端请求消息 的时间间隔, 默认是0, 不发送.
ClientAliveInterval 60 表示每分钟发送一次, 然后客户端响应, 这样就保持长连接了.
ClientAliveCountMax, 使用默认值3即可.
ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值,就自动断开,正常情况下,客户端不会不响应.

然后重启sshd service

sudo /etc/init.d/ssh restart
  • 1
  1. 我们说一下公私钥简介与原理

公钥和私钥都属于非对称加密算法的一个实现,非对称加密算法不能使用相同的密钥进行解密,也就是说公钥加密的只能使用私钥进行解密。
这个加密算法的信息交换过程是:

  1. 持有公钥的一方(甲)在收到持有私钥的一方(乙)的请求时,甲会在自己的公钥列表中查找是否有乙的公钥,如果有则使用一个随机字串使用公钥加密并发送给乙。
  2. 乙收到加密的字串使用自己的私钥进行解密,并将解密后的字串发送给甲。
  3. 甲接收到乙发送来的字串与自己的字串进行对比,如过通过则验证通过,否则验证失败。

五、VSCode使用

官方下载地址:https://code.visualstudio.com/Download 安装你的系统版本下载,我选择64位

vscode可以连接redis吗 vscode怎么连接ssh远程_Windows_10


点击安装即可,关于VScode的使用可以参考Visual Studio Code的使用 打开VSCode,安装Remote - SSH插件,

vscode可以连接redis吗 vscode怎么连接ssh远程_vscode可以连接redis吗_11


点击【远程资源管理器】,打开【SSH TARGETS】的Configure,选择【C:\Users\william.ssh\config】文件

vscode可以连接redis吗 vscode怎么连接ssh远程_客户端_12


然后修改文件,填入主机名(可以自己随意设定),主机ip地址,及用户名

vscode可以连接redis吗 vscode怎么连接ssh远程_Windows_13


保存后即可,然后我们就会看到远程资源管理器可以看到我们配置的主机,右键,点击【Connect to Host in Current Window】

vscode可以连接redis吗 vscode怎么连接ssh远程_PowerShell_14


可以在右下角看到连接成功,点击新建终端,也可以看到,终端新建成功

vscode可以连接redis吗 vscode怎么连接ssh远程_Windows_15


可以看到,文件夹和文件也可以打开成功

vscode可以连接redis吗 vscode怎么连接ssh远程_PowerShell_16



在Win10上使用SSH远程连接Linux搭建VSCode开发环境

一、使用条件

使用VSCode远程开发需要满足一些条件:

  1. 目标主机必须安装SSH客户端并且是Linux 64位系统(树莓派仅支持2b及以上,zero/w不支持因为bcm2835是armv6l架构)
  2. arm架构仅支持RaspbianStrech/9(32位)及以上或Ubuntu18.04(64位)及以上系统
  3. 本地主机仅支持Windows 1803及以上版本并安装官方OpenSSH组件
    Windows10系统版本查看方法:

二、开启Windows10的SSH功能

点击开始菜单->设置->应用->应用和功能->可选功能->添加功能;添加OpenSSH 客户端OpenSSH 服务器

vscode可以连接redis吗 vscode怎么连接ssh远程_vscode可以连接redis吗


在Linux下使用命令开启ssh功能:

sudo apt-get install openssh-server
  • 1

安装成功使用命令后的显示:

vscode可以连接redis吗 vscode怎么连接ssh远程_vscode可以连接redis吗_02

三、测试在Windows下SSH登录Ubuntu

Windows右击开始界面,打开Windows PowerShell

vscode可以连接redis吗 vscode怎么连接ssh远程_客户端_03


使用命令ssh [username]@[ip addr]命令远程登陆,然后输入密码,如图,SSH成功登录ubuntu16系统

vscode可以连接redis吗 vscode怎么连接ssh远程_PowerShell_04

四、使用密钥进行ssh免密登录

ssh使用私钥登录大致步骤是:主机A(客户端)创建公钥私钥,并将公钥复制到主机B(被登陆机)的指定用户下,然后主机A使用保存私钥的用户登录到主机B对应保存公钥的用户。

  1. 在Windows10下生成公钥和私钥
    打开Windows PowerShell使用命令生成即可,-t rsa可以省略,默认就是生成rsa类型的密钥
ssh-keygen -t rsa
  • 1

命令执行后会有提示,输入三次回车即可,执行完成后会在当前用户的.ssh目录下生成两个文件:id_rsa、id_rsa.pub文件,前者是私钥文件,后者是公钥文件(拷贝到其他主机只需要拷贝这个文件的内容)

vscode可以连接redis吗 vscode怎么连接ssh远程_PowerShell_05

vscode可以连接redis吗 vscode怎么连接ssh远程_vscode可以连接redis吗_06

  1. 将公钥复制到被登陆的主机上的 ~/.ssh/authorized_keys 文件中
    拷贝公钥有两种方法,其原理都相同:
    1)、使用 ssh-copy-id 直接拷贝
    如果安装了Git的话,打开Git bash使用 ssh-copy-id 进行拷贝公钥非常方便,只需要指定目标主机和目标主机的用户即可。命令如下:
ssh-copy-id -i ~/.ssh/id_rsa.pub william@192.168.0.106
  • 1

然后依次输入yes和密码即可

vscode可以连接redis吗 vscode怎么连接ssh远程_Windows_07


2)、自己创建文件进行拷贝

如果没有安装Git,好像Windows PowerShell不支持ssh-copy-id命令;

先cd到Windows10的用户下的 .ssh 目录,使用scp命令将authorized_keys文件拷贝到Ubuntu下

scp .\id_rsa.pub william@192.168.0.106:/home/william
  • 1

拷贝时需要输入密码

vscode可以连接redis吗 vscode怎么连接ssh远程_PowerShell_08


然后使用ssh登录Ubuntu在用户目录下创建.ssh文件夹,需要将该目录权限改为700,该目录的权限必须是700才有效,然后将id_rsa.pub文件移动到.ssh目录下,并修改其名称为authorized_keys,修改其权限为600,该文件有规定如果属组其他人出现可写则文件就不会生效

vscode可以连接redis吗 vscode怎么连接ssh远程_vscode可以连接redis吗_09

  1. 我们回到windows10下,使用ssh命令登录,可以看到,不再需要密码了
  2. 解决一个问题
    在使用过程中包括使用putty来SSH连接远程服务器的时候出现一段时间不操作连接断开。
    找到sshd_config配置文件进行编辑:
sudo vim /etc/ssh/sshd_config
  • 1

在其中找到以下配置项目:

#ClientAliveInterval 0
#ClientAliveCountMax 3

如果没有,则在文件后添加,修改或添加成如下所示:

ClientAliveInterval 60
ClientAliveCountMax 3
  • 1
  • 2

ClientAliveInterval 指定了服务器端向客户端请求消息 的时间间隔, 默认是0, 不发送.
ClientAliveInterval 60 表示每分钟发送一次, 然后客户端响应, 这样就保持长连接了.
ClientAliveCountMax, 使用默认值3即可.
ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值,就自动断开,正常情况下,客户端不会不响应.

然后重启sshd service

sudo /etc/init.d/ssh restart
  • 1
  1. 我们说一下公私钥简介与原理

公钥和私钥都属于非对称加密算法的一个实现,非对称加密算法不能使用相同的密钥进行解密,也就是说公钥加密的只能使用私钥进行解密。
这个加密算法的信息交换过程是:

  1. 持有公钥的一方(甲)在收到持有私钥的一方(乙)的请求时,甲会在自己的公钥列表中查找是否有乙的公钥,如果有则使用一个随机字串使用公钥加密并发送给乙。
  2. 乙收到加密的字串使用自己的私钥进行解密,并将解密后的字串发送给甲。
  3. 甲接收到乙发送来的字串与自己的字串进行对比,如过通过则验证通过,否则验证失败。

五、VSCode使用

官方下载地址:https://code.visualstudio.com/Download 安装你的系统版本下载,我选择64位

vscode可以连接redis吗 vscode怎么连接ssh远程_Windows_10


点击安装即可,关于VScode的使用可以参考Visual Studio Code的使用 打开VSCode,安装Remote - SSH插件,

vscode可以连接redis吗 vscode怎么连接ssh远程_vscode可以连接redis吗_11


点击【远程资源管理器】,打开【SSH TARGETS】的Configure,选择【C:\Users\william.ssh\config】文件

vscode可以连接redis吗 vscode怎么连接ssh远程_客户端_12


然后修改文件,填入主机名(可以自己随意设定),主机ip地址,及用户名

vscode可以连接redis吗 vscode怎么连接ssh远程_Windows_13


保存后即可,然后我们就会看到远程资源管理器可以看到我们配置的主机,右键,点击【Connect to Host in Current Window】

vscode可以连接redis吗 vscode怎么连接ssh远程_PowerShell_14


可以在右下角看到连接成功,点击新建终端,也可以看到,终端新建成功

vscode可以连接redis吗 vscode怎么连接ssh远程_Windows_15


可以看到,文件夹和文件也可以打开成功

vscode可以连接redis吗 vscode怎么连接ssh远程_PowerShell_16