基于Windows的vscode远程开发环境搭建+内网穿透教程【windows+vscode+SSH+ubuntu+Xshell+Xftp】

本地主机系统:Windows
远程主机系统:Ubuntu
开发工具:vscode+Xshell

介绍:
全文总共分三篇。1、第一篇,局域网内部一台主机,主机上安装了vscode和虚拟机,虚拟机安装了Ubuntu,第一篇介绍了这种情况下vscode如何通过Ubuntu的用户密码来远程连接Ubuntu系统,进行程序开发。2、第二篇,与第一篇条件相同,在第一篇的基础上解决新的问题:每次vscode远程Ubuntu和切换Ubuntu当前文件路径时,都需要输入Ubuntu的用户密码。本篇介绍如何通过SSH密钥进行免密登陆及切换工作路径。3、第三篇,前面介绍的都是在同一个局域网内一台主机上的vscode远程另一台主机上的Ubuntu的搭建方法,在设置配置文件的时候只需要配置成内网ip就行了,然而这个ip地址是局域网内的,不属于公网的,所以该主机对外是隐藏的。当遇到在家办公时,需要外网主机上的vscode远程到公司局域网内主机时,由于局域网主机不对外暴露,无法再用局域网的主机ip配置,此时需要先通过内网穿透等方法来解决这个问题。第三篇介绍了一台外网主机如何连接一个局域网内的主机进行远程开发。

第一篇:远程开发环境搭建

准备工作

vscode官网:https://code.visualstudio.com/
Xshell和Xftp官网:https://www.netsarang.com/zh/free-for-home-school/
注:进入官网网址后,直接填入姓名和邮箱,选择Xshell或者Xftp或者两者,然后点击下载,那么这两款软件的下载地址就会自动发送到你的邮箱中。这两款软件对于学校学生和个人的使用是免费的。

第一步

安装vscode到Windows上

第二步

安装git或直接安装SSH到Windows上

第三步

安装Ubuntu操作系统
顺便为这个Ubuntu系统设置一个普通用户:
用户名为:username
用户密码为:password
后面第五步将通过windows上的vscode远程登录到这个用户名上。
安装ssh服务器到Ubuntu上

sudo apt install openssh-server

第四步

打开vscode,打开拓展,搜索Remote Development,并安装该拓展。

第五步

安装好Remote Development后,vscode左侧会出现一个小电脑图标,它就是远程资源管理器,点开后,选择SSH Targets(一般默认,不用选),然后点击左侧SSH Targets界面的小齿轮图标configure图标。
点击小齿轮后,vscode的顶部会出现一些选项,选择C:\Users\username\.ssh\config,就会跳出如下的配置信息:

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host alias
    HostName hostname
    User user

进行以下配置:

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host 随便起的名字                #Host参数右边的名字是这个远程连接的名字,随便起。
    HostName 192.168.10.193     #HostName参数右边的主机名是你需要连接的远程主机的ip地址。
    User username               #User参数右边的用户名是你远程主机上的一个用户的用户名,你将使用这个用户进行登录,同样,进行远程时的连接密码也是远程主机上该用户名所对应的登录密码。

然后左侧SSH TARGETS窗口将会出现一个新的连接,右键点击连接,然后选择系统为Linux,然后在终端输入Ubuntu主机上username用户的用户密码,登录成功。

第六步

在Windows上安装Xshell,安装好直接打开,点击新建,然后就会跳出新建会话属性
在常规一栏修改参数:
名称:自己随便起一个新建会话名称
协议:登录协议选择SSH
主机:主机填写远程主机的IP地址
端口号:一般SSH远程的端口号默认为22
点击确定,然后主界面左侧的会话管理器的所有会话上就会出现一个名为你刚刚自己随便起的会话名称的新连接,双击它,然后就会跳出让你填写登录用户名的框子,你可以填写你要远程登录的远程主机上的一个用户名,然后确定,然后填入密码,然后就会与远程主机连接,并出现远程主机的终端界面。

第七步

安装Xftp,可以用来方便地传输Windows和远程Ubuntu之间的文件。

第二篇:通过SSH密钥进行免密登陆远程开发

然而,如果在vscode上仅仅是通过用户密码登录远程Ubuntu,那么每次切换文件夹的时候都会需要输入一次用户密码,这很麻烦,可以通过SSH密钥的方式免密连接。
解决方式如下:

第一步:通过管理员权限打开windows的cmd,输入命令:

ssh-keygen -t rsa

这句命令将生成windows当前用户的一个公钥和一个私钥,它默认生成在C盘下的C:\Users\你的当前用户的用户名\.ssh文件夹下,私钥名为:id_rsa;公钥名为id_rsa.pub
第二步:将windows下的公钥发给远程主机Ubuntu
公钥需要发送到远程主机上,可以使用命令ssh-copy-id发送,但是windows的cmd无法使用。还有另一种方法,那就是通过Xshell在远程系统里生成公钥和私钥:

ssh-keygen -t rsa

它会询问你需要将该公钥和私钥保存到哪里,直接enter键保存在默认路径:/home/username/.ssh文件夹下就行了,如下:

username@ubuntu193:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/username/.ssh/id_rsa
Your public key has been saved in /home/username/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:UaWv+KDZVmfdrElQSubBpT+OGPYhLDBsG1KPLL70Fuc username@ubuntu193
The key's randomart image is:
+---[RSA 3072]----+
|      .   .o...  |
|     + o . .=..  |
|    o O o .+.+   |
|   . + = o .+.   |
|    o o S = oooo |
|   . o + +.*o+o.o|
|    . o E.ooo..o |
|     . +.o    o  |
|      o.. .      |
+----[SHA256]-----+
username@ubuntu193:~$ 

第二步,将windows本地生成的ssh公钥上传到Ubuntu服务器上,有两个方法,此处使用方法二实验成功;方法一未成功,存在未知问题

方法一

然后将Xshell终端的目录切换到:/home/username/.ssh下,并用vim新建一个名为authorized_keys的文件,如下:

username@ubuntu193:~$ cd /home/username/.ssh
username@ubuntu193:~/.ssh$ ls
authorized_keys  id_rsa  id_rsa.pub  known_hosts

从上面可见,有时候authorized_keys已经存在了,那么可以通过vim直接打开它,然后在windows上通过文本方式打开公钥id_rsa.pub,并将公钥的内容Ctrl+a全选Ctrl+c复制,然后粘贴到Xshell打开的终端的authorized_keys里。

方法二

打开Git Bash工具,切换目录到windows的公钥和私钥生成的位置,此处为:C:\Users\username\.ssh
如果还未生成ssh密钥,则输入:

ssh-keygen

生成ssh密钥后,输入命令上传公钥到Ubuntu服务器:

ssh-copy-id -i id_rsa.pub username@192.168.10.193

然后输入Ubuntu上username用户名的密码,上传成功。
上传后还可以进行ssh远程登陆验证,命令如下:

ssh username@192.168.10.193

第三步,配置windows端vscode上关于ssh密钥登陆的配置文件

然后Ctrl+Shift+p打开Remote-SSH:Open SSH Configuration File...,然后点开C:\Users\username\.ssh\config内容如下所示:

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host 随便起的名字                #Host参数右边的名字是这个远程连接的名字,随便起。
    HostName 192.168.10.193     #HostName参数右边的主机名是你需要连接的远程主机的ip地址。
    User username               #User参数右边的用户名是你远程主机上的一个用户的用户名,你将使用这个用户进行登录,同样,进行远程时的连接密码也是远程主机上该用户名所对应的登录密码。 

想要进行ssh密钥登录,需要增加私钥地址内容,修改如下:

# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host 随便起的名字                #Host参数右边的名字是这个远程连接的名字,随便起。
    HostName 192.168.10.193     #HostName参数右边的主机名是你需要连接的远程主机的ip地址。
    User username               #User参数右边的用户名是你远程主机上的一个用户的用户名,你将使用这个用户进行登录,同样,进行远程时的连接密码也是远程主机上该用户名所对应的登录密码。
    IdentityFile "C:\Users\username\.ssh\id_rsa"  

其中,id_rsa为私钥,id_rsa.pub为公钥

保存后,现在可以在vscode中可以免密来回切换文件夹了。

第三篇:外网主机vscode远程到内网Ubuntu系统的开发环境搭建

此处直接先参考:https://www.cnblogs.com/conefirst/articles/15392967.html
将内网穿透的环境搭建好后,打开外网主机上的Git Bash工具,然后切换当前目录到生成SSH密钥的文件夹下,然后上传本地的公钥到远程内网Ubuntu服务器上,这里由于是外网主机访问内网主机,所以和第二篇中有些不一样:

ssh-copy-id -i id_rsa.pub -p 9887 username@125.64.92.159

其中,125.64.92.159是内网穿透工具提供的公网地址,9887是内网穿透工具提供的端口号,对这个公网地址+端口号进行访问时,便会直接定位到内网已经绑定好的主机上。所以当外网主机需要vscode远程连接内网主机进行开发时,必须同时指定该主机对应的被内网穿透后获取到的公网地址+端口号。
上传公钥后,进行远程测试:

ssh -p 9887 username@125.64.92.159

测试成功后,打开vscode,Ctrl+Shift+p,打开ssh的配置文件,添加以下内容:

Host 192.168.10.183
    HostName 125.64.92.159
    User username
    Port 9887
    IdentityFile "C:\Users\username\.ssh\id_rsa"

注意:打开vscode之前,最好将C:\Users\username\.ssh目录下除了ssh公钥和私钥以外的其它和vscode有关的配置文件全部删了,否则可能还会导致远程连接的失败。

结束

至此,你可以通过本地的Xshell在Ubuntu进行文件操作,并通过vscode在Ubuntu系统上进行开发工作了。

posted @ 2021-09-08 14:51  一只小菜菜鸟  阅读(1917)  评论(0编辑  收藏  举报