local machine使用vscode远程开发remote server的方法
0、 问题提出
本地vmware装linux开发比较笨重,笔记本风扇会呼呼的转,如果再开个matlab/simulink,16G内存的笔记本基本会卡得不行。后面利用阿里云的优惠,购置了三年的云服务器,可以用vscode远程调试开发linux服务器。经过一段时间的尝试后,发现一个比较烦的问题,每次登陆远程服务器后更换开发目录,都要重新输入密码,而且要等待时间也比较长。经过多方查阅,发现可以通过配置公钥和私钥,免密切换远程服务器的目录,也即在远程服务器直接打开文件夹就行,不用再去输入密码了。但是看了多个文件后发现很多文章对配置关系都写得不清楚,尤其在几方关系、密钥的配置文件位置上。索性自己做个记录,以防遗忘。
1、local machine VS. vscode VS. remote server
利用vscode进行远程开发必然要牵涉到三方,一是local machine,二是vscode,三是remote server。其中
local machine:即本地计算机,系统可以是windows也可以是linux。目前本人使用win7 作为local machine,linux系统类似,后面解释。
vscode:起到中间连接local machine和remote server的中间层的作用,利用丰富的插件生态,方便远程开发。在local machine处有vscode client运行,在remote machine处有vscode server运行。
remote server:即远程服务器,系统一般是linux,里面跑各种应用。当前本人购置的阿里云服务器都是ubuntu系统。
local machine 是远程开发的发起者,为保证通信的有效,需要生成密钥,其中私钥存放在local machine处,公钥放在remote server处。当需要通信时,第三方vscode根据remote server提供的公钥,与远程通信的发起方local machine提供的私钥对比,发现是一对时,则允许两者通信。
先给出三者之间的关系简图,后面分别说明。
2、local machine 的配置
(1)本人的local machine是win7系统,生成密钥使用ssh-keygen命令,但是cmd无法运行该命令,但是git bash可以运行,因此要先安装git。
(2)使用git运行该命令,将生成私钥和公钥,运行过程会出现提示,按默认配置一路按enter即可。
(3)私钥:id_rsa,公钥:id_rsa.pub,存放路径对于本人win7而言,一般为C:\Users\XXX.ssh,其中XXX根据具体使用账户确定。
3、vscode的配置
(1)实际上这里的vscode相当于vscode client,配置也是配置这个。在remote server处有vscode server,是自动配置好的。
(2)ctrl+shift+p 搜索ssh config打开ssh配置文件,对于本人win7而言,路径是C:\User\XXX\ssh\config。
(3)配置文件为
Host remote_server_alias_name
HostName remote_server_IP
User remote_server_name
IdentityFile "C:\Users\XXX\.ssh\id_rsa"
ServerAliveInterval 60
与remote server有关的是登陆remote server相关的部分
HostName remote_server_IP
User remote_server_name
与local machine有关的是存放私钥的部分
IdentityFile "C:\Users\XXX\.ssh\id_rsa"
为了保证与服务器连接,每60秒联系一次
ServerAliveInterval 60
4、remote server的配置
(1)将local machine中的公钥C:\Users\XXX.ssh\id_rsa.pub内容copy到remote server 的~/.ssh/authorized_keys中。
(2)目录下如无authorized_keys文件,则touch命令新建一个文件。
(3)\id_rsa.pub内容格式为ssh-rsa abcdefg= XXX@XXX-PC
5、开发示例
完成以上配置后,再次打开远程服务器开发不再需要输入密码建立连接。