之前我写过一篇文章远程调试Node程序,介绍了怎样在chrome中调试node程序。后来我发现vscode中有更好的调试方法。
远程环境配置
首先要在远程服务器中打开SSH server功能,ubuntu系统基本都自带,没有的话,安装一下
apt-get install openssh-server
本地安装vscode插件
下载 VScode Insider版本,然后安装Remote Development扩展,安装 Remote Development扩展后,其它的Remote-SSH会自动安装,若不自动安装,请手动按照截图安装。
![00b0ebe0007c9700f72e5c2fae5a74b1.png](https://i-blog.csdnimg.cn/blog_migrate/6e4c87a65d280e9ecce0211d1b060dbf.jpeg)
配置用户名/密码认证, 需要编辑一下VSCode的settings.json文件,打开的方式如下图,点击setting,点击任意一个‘Edit in settings.json’。
![4de0c83077090d8d43691630333e1a5c.png](https://i-blog.csdnimg.cn/blog_migrate/2bba73caa0c052fdea8c9f6885da0b5c.jpeg)
然后在settings.json 添加 "remote.SSH.showLoginTerminal": true
![2425972ddeb3f6505267bf7dd05d2390.png](https://i-blog.csdnimg.cn/blog_migrate/e14c5d29998176c7f4cbd631ad7800e4.jpeg)
点击左下角的“open a remote window”,选择 ‘connect to Host’
![28e19d489e6070afc4eebfe8971a84ec.png](https://i-blog.csdnimg.cn/blog_migrate/c95904dd82dac5da4bc6d365202ef557.jpeg)
![b596961cea6873402c585080a5d5fd3a.png](https://i-blog.csdnimg.cn/blog_migrate/b346c428a25f4d74a9e421232b074360.jpeg)
根据图片顺序打开config文件,并填写远程主机的Host和登录名
![b4c34dd528b0ceb17b405a02eb069205.png](https://i-blog.csdnimg.cn/blog_migrate/732c7f160b1c507c2f8b50ea559b7636.jpeg)
弹出一个新窗口,根据提示,输入linux的密码
![027ac02c4fb2fc9f72248c55d3ab9dcb.png](https://i-blog.csdnimg.cn/blog_migrate/c6fe9320031fb0c6ce1e43e5dee8a2a3.jpeg)
已经连接上了以后 ,点击 文件->打开文件夹(或者文件),可以显示出linux的文件夹(或者文件)
![3f3f879219f14ef1dec3ffa282da3442.png](https://i-blog.csdnimg.cn/blog_migrate/ed61ce77b0271143b659a73e0201c4fc.jpeg)
配置公钥
上面的步骤每次都要输入密码,非常麻烦,可以通过配置公钥来解决这个问题。
1、打开Git的安装目录,把 Gitusrbin 放到环境变量。
2、然后打开过程 编辑主机config文件的目录 C:Usersye.ssh (不同的电脑user名字会不一样),执行 ssh-keygen。
![84ecdb720fbacd857c6ecafd6c1d5f33.png](https://i-blog.csdnimg.cn/blog_migrate/500f4dc9c88b206fc979d6a8b4690ad8.png)
路回车即可! 完成后多了id_rsa,id_rsa.pub两个文件.
3、我们需要将id_rsa.pub 文件,复制一份到linux服务器上~/.ssh/目录下。若没有该目录,请执行mkdir ~/.ssh创建,然后将id_rsa.pub,远程传输到该目录下.
4、然后切换到该目录下,执行 cat id_rsa.pub >> authorized_keys,
5、修改 /etc/ssh/sshd_config文件下的
PubkeyAuthentication yes
,
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
,两条是不是正常,若有注释,请取消,若不相同,请修改或者添加
![42b2077cace18343a4bd28d51148bf19.png](https://i-blog.csdnimg.cn/blog_migrate/940fe744fec6bde9574ce23eff345089.jpeg)
6、重启远程主机的ssh服务 /etc/init.d/ssh resart
7、然后回到Windows的命令行,执行ssh (用户名)@192.168.160.132
括号中的请替换为您的Linux用户名,请一定要按照这种格式登陆,一定要输入用户名和IP,不要只输IP
![a156113d924b0cd7ab79c687fbe18417.png](https://i-blog.csdnimg.cn/blog_migrate/abdbc875dd53afc66330cf441cf8f355.jpeg)
此时打开文件的时候就不会再提示输入密码了
远程调试
找到远程服务器中 node 的路径
which node
在 launch.json 中添加配置
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/server/server.js",
"runtimeExecutable": "/root/.nvm/versions/node/v8.6.0/bin/node" // 就增加这行
}
]
}