以下内容为本人的著作,如需要转载,请声明原文链接 微信公众号「englyf」https://mp.weixin.qq.com/s/f1KZOlL92ojes-r2l9rlCw
我的需求是,在Windows桌面环境下,通过 VSCODE
远程调试在服务器(或者其它远程主机)的工程代码。其实就是提供一个方便快捷的方式,让你可以在本地的 VSCODE
环境里编辑或者查看远程主机的目录文件罢了。
这里说下我的配置过程:(首先,程序猿有个习惯把序号从0开始,莫要见怪)
0. 安装 SSH
在命令行窗口里输入 ssh
然后回车看看输出,确认一下是否已经安装了ssh。只要不是提示找不到ssh,那么就表示本机已安装了ssh。
如果很不幸本地还没安装,那就搜索一下ssh的安装教程吧,估计隔壁老王就有。
实在太懒不想搜的话,这里有条懒虫[https://sourceforge.net/projects/sshwindows/]送给兄dei你。
…
到这里假设已经确认好安装了ssh,下面会用ssh生成密钥对,包括公钥和私钥,这会被用到绑定服务器和本地计算机便于免密码登录。
C:\Users\我的用户名>ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\我的用户名/.ssh/id_rsa):
输入回车,保存密钥对到默认的目录 C:\Users\我的用户名\.ssh
中。
Enter passphrase (empty for no passphrase):
输入回车,设置密钥对保护密码为空(如果对安全性要求比较高,建议还是输入一下密码再回车)。
Enter same passphrase again:
这一步只是重复输入上一步输入的密码,如果上一步设置密码是空,这一步也直接输入回车。
Your identification has been saved in C:\Users\XXX/.ssh/id_rsa.
Your public key has been saved in C:\Users\XXX/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXX
The key's randomart image is:
+---[RSA 3072]----+
|@@==++ . |
XXXX
+----[SHA256]-----+
此时,公钥已经保存到 C:\Users\xxx\.ssh\id_rsa.pub
文件中,私钥已经保存到 C:\Users\xxx\.ssh\id_rsa
文件中。
而我用的是阿里云的服务器,它会要求使用后台操作界面生成私钥并自动下载到本地,保存的格式是(.pem)格式。
1. 打开已安装的 VSCODE
如果还没安装就装一个呗,这里边的过程没什么可以讲的。不过我有个推荐的地方如图,尤其是添加到右键菜单这里:
2. 安装 VSCODE
插件
在 VSCODE
自带的插件市场里搜索以下插件并且安装:
插件名 | 用途 |
---|---|
Remote - SSH | 用SSH打开远程机器的文件夹而且可以应用 vscode 的所有功能 |
Remote - SSH: Editing Configuration Files | 编辑 SSH 配置文件 |
3. 编辑 SSH
配置文件
在 VSCODE
左侧边栏里找到 Remote Explorer
一项,点击进去。
在弹出的窗口里,下拉菜单选择 SSH Targets
(这里的目的是链接远程服务器),再点击设置按钮,在弹出来的选择窗口里,如图
选择第一个(自己用户目录下的 config
文件)。按照下面的提示编辑内容并保存。
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host 自己起个名字,你喜欢就好HostName 远程服务器的IP地址User 系统用户名Port 端口号,SSH一般都是22IdentityFile 密钥对里的私钥的本地保存位置(用双引号括起来)
然后在 VSCODE
左边的窗口里SSH TARGETS下面可以看到新添加的主机,默认是未连接状态。
4. 连接主机
在上一步添加的主机窗口里,右键选择 Connect to Host in Current Window
就可以在当前窗口连接到指定的远程主机了。
既然连接成功了(可能也会失败,后边分析原因),那么远程主机的文件怎么浏览查看或者编辑呢?
在 VSCODE
左侧边栏里找到 Explorer
一项,点击进去。
如果还没有文件被打开,那么在左边的窗口可以看到一栏 NO FOLDER OPENED
,点击打开,再点击 Open Folder
按钮,在中间会弹出下拉菜单,在里边可以填上想要打开的远程主机的目录。默认显示 /root/
目录了,我这里直接填我的一个 Django 的工程位置。
说回来,上边说到连接可能会有不成功的情况。我这里就曾碰到这样的错误,点击连接后弹出下面的警告窗。
意思就是说 无法稳定连接到我的远程主机xxx
,然后也可以看到输出窗口会打印连接的过程日志。细心点的话,可以从日志里看到下面的关键信息:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
[03:12:56.641] > @ WARNING: UNPROTECTED PRIVATE KEY FILE! @
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> Permissions for 'G:\\ProjectWorkstation\\ali-cloud-key-pair\\id_rsa.pem' are too open.
> It is required that your private key files are NOT accessible by others.
> This private key will be ignored.
> Load key "G:\\ProjectWorkstation\\ali-cloud-key-pair\\id_rsa.pem": bad permissions
> root@XXX.XXX.XXX.XXX: Permission denied (publickey).
意思就是说我这私钥文件[存放在 G:\ProjectWorkstation\ali-cloud-key-pair\id_rsa.pem]没有被保护起来,专业点的说法是文件设置的权限太过宽松了,得改,否则就是不给通过。好吧,我改!下面说下我的配置过程。
1)删掉不相关的用户所有者,只保留当前用户
找到上边提到的那个文件[G:\ProjectWorkstation\ali-cloud-key-pair\id_rsa.pem],鼠标右键选择 属性
,在弹出来的 属性
窗口选择 安全
,如图
点击 高级
,在弹出的 高级安全设置
窗口选择 禁用继承
,然后一路点击确认并退出 高级安全设置
的窗口。
接着在 属性
窗口点击 编辑
,在弹出的 权限
窗口里将所有的组或用户名删掉,再点击 添加
,把自己的当前用户添加上去。
(至于怎么找到当前用户,这里不展开了,你可以在其它地方找到这方面的信息,逃。。。)
2)仅保留读取权限
在 权限
窗口,选中上面新建的用户,编辑权限,仅保留 读取
即可。如图
好了,点击确定并退出。