在Win10上使用SSH远程连接Linux搭建VSCode开发环境
一、使用条件
使用VSCode远程开发需要满足一些条件:
- 目标主机必须安装SSH客户端并且是Linux 64位系统(树莓派仅支持2b及以上,zero/w不支持因为bcm2835是armv6l架构)
- arm架构仅支持RaspbianStrech/9(32位)及以上或Ubuntu18.04(64位)及以上系统
- 本地主机仅支持Windows 1803及以上版本并安装官方OpenSSH组件
Windows10系统版本查看方法:
二、开启Windows10的SSH功能
点击开始菜单->设置->应用->应用和功能->可选功能->添加功能;添加OpenSSH 客户端
和 OpenSSH 服务器
在Linux下使用命令开启ssh功能:
sudo apt-get install openssh-server
- 1
安装成功使用命令后的显示:
三、测试在Windows下SSH登录Ubuntu
Windows右击开始界面,打开Windows PowerShell
,
使用命令ssh [username]@[ip addr]
命令远程登陆,然后输入密码,如图,SSH成功登录ubuntu16系统
四、使用密钥进行ssh免密登录
ssh使用私钥登录大致步骤是:主机A(客户端)创建公钥私钥,并将公钥复制到主机B(被登陆机)的指定用户下,然后主机A使用保存私钥的用户登录到主机B对应保存公钥的用户。
- 在Windows10下生成公钥和私钥
打开Windows PowerShell
使用命令生成即可,-t rsa
可以省略,默认就是生成rsa类型的密钥
ssh-keygen -t rsa
- 1
命令执行后会有提示,输入三次回车即可,执行完成后会在当前用户的.ssh目录下生成两个文件:id_rsa、id_rsa.pub文件,前者是私钥文件,后者是公钥文件(拷贝到其他主机只需要拷贝这个文件的内容)
- 将公钥复制到被登陆的主机上的 ~/.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
和密码即可
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
拷贝时需要输入密码
然后使用ssh登录Ubuntu在用户目录下创建.ssh
文件夹,需要将该目录权限改为700,该目录的权限必须是700才有效,然后将id_rsa.pub文件移动到.ssh
目录下,并修改其名称为authorized_keys,修改其权限为600,该文件有规定如果属组其他人出现可写则文件就不会生效
- 我们回到windows10下,使用ssh命令登录,可以看到,不再需要密码了
- 解决一个问题
在使用过程中包括使用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
- 我们说一下公私钥简介与原理
公钥和私钥都属于非对称加密算法的一个实现,非对称加密算法不能使用相同的密钥进行解密,也就是说公钥加密的只能使用私钥进行解密。
这个加密算法的信息交换过程是:
- 持有公钥的一方(甲)在收到持有私钥的一方(乙)的请求时,甲会在自己的公钥列表中查找是否有乙的公钥,如果有则使用一个随机字串使用公钥加密并发送给乙。
- 乙收到加密的字串使用自己的私钥进行解密,并将解密后的字串发送给甲。
- 甲接收到乙发送来的字串与自己的字串进行对比,如过通过则验证通过,否则验证失败。
五、VSCode使用
官方下载地址:https://code.visualstudio.com/Download 安装你的系统版本下载,我选择64位
点击安装即可,关于VScode的使用可以参考Visual Studio Code的使用 打开VSCode,安装Remote - SSH
插件,
点击【远程资源管理器】,打开【SSH TARGETS】的Configure,选择【C:\Users\william.ssh\config】文件
然后修改文件,填入主机名(可以自己随意设定),主机ip地址,及用户名
保存后即可,然后我们就会看到远程资源管理器可以看到我们配置的主机,右键,点击【Connect to Host in Current Window】
可以在右下角看到连接成功,点击新建终端,也可以看到,终端新建成功
可以看到,文件夹和文件也可以打开成功
在Win10上使用SSH远程连接Linux搭建VSCode开发环境
一、使用条件
使用VSCode远程开发需要满足一些条件:
- 目标主机必须安装SSH客户端并且是Linux 64位系统(树莓派仅支持2b及以上,zero/w不支持因为bcm2835是armv6l架构)
- arm架构仅支持RaspbianStrech/9(32位)及以上或Ubuntu18.04(64位)及以上系统
- 本地主机仅支持Windows 1803及以上版本并安装官方OpenSSH组件
Windows10系统版本查看方法:
二、开启Windows10的SSH功能
点击开始菜单->设置->应用->应用和功能->可选功能->添加功能;添加OpenSSH 客户端
和 OpenSSH 服务器
在Linux下使用命令开启ssh功能:
sudo apt-get install openssh-server
- 1
安装成功使用命令后的显示:
三、测试在Windows下SSH登录Ubuntu
Windows右击开始界面,打开Windows PowerShell
,
使用命令ssh [username]@[ip addr]
命令远程登陆,然后输入密码,如图,SSH成功登录ubuntu16系统
四、使用密钥进行ssh免密登录
ssh使用私钥登录大致步骤是:主机A(客户端)创建公钥私钥,并将公钥复制到主机B(被登陆机)的指定用户下,然后主机A使用保存私钥的用户登录到主机B对应保存公钥的用户。
- 在Windows10下生成公钥和私钥
打开Windows PowerShell
使用命令生成即可,-t rsa
可以省略,默认就是生成rsa类型的密钥
ssh-keygen -t rsa
- 1
命令执行后会有提示,输入三次回车即可,执行完成后会在当前用户的.ssh目录下生成两个文件:id_rsa、id_rsa.pub文件,前者是私钥文件,后者是公钥文件(拷贝到其他主机只需要拷贝这个文件的内容)
- 将公钥复制到被登陆的主机上的 ~/.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
和密码即可
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
拷贝时需要输入密码
然后使用ssh登录Ubuntu在用户目录下创建.ssh
文件夹,需要将该目录权限改为700,该目录的权限必须是700才有效,然后将id_rsa.pub文件移动到.ssh
目录下,并修改其名称为authorized_keys,修改其权限为600,该文件有规定如果属组其他人出现可写则文件就不会生效
- 我们回到windows10下,使用ssh命令登录,可以看到,不再需要密码了
- 解决一个问题
在使用过程中包括使用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
- 我们说一下公私钥简介与原理
公钥和私钥都属于非对称加密算法的一个实现,非对称加密算法不能使用相同的密钥进行解密,也就是说公钥加密的只能使用私钥进行解密。
这个加密算法的信息交换过程是:
- 持有公钥的一方(甲)在收到持有私钥的一方(乙)的请求时,甲会在自己的公钥列表中查找是否有乙的公钥,如果有则使用一个随机字串使用公钥加密并发送给乙。
- 乙收到加密的字串使用自己的私钥进行解密,并将解密后的字串发送给甲。
- 甲接收到乙发送来的字串与自己的字串进行对比,如过通过则验证通过,否则验证失败。
五、VSCode使用
官方下载地址:https://code.visualstudio.com/Download 安装你的系统版本下载,我选择64位
点击安装即可,关于VScode的使用可以参考Visual Studio Code的使用 打开VSCode,安装Remote - SSH
插件,
点击【远程资源管理器】,打开【SSH TARGETS】的Configure,选择【C:\Users\william.ssh\config】文件
然后修改文件,填入主机名(可以自己随意设定),主机ip地址,及用户名
保存后即可,然后我们就会看到远程资源管理器可以看到我们配置的主机,右键,点击【Connect to Host in Current Window】
可以在右下角看到连接成功,点击新建终端,也可以看到,终端新建成功
可以看到,文件夹和文件也可以打开成功