我们可能会有在远程主机环境下开发的需求,vscode的Remote-SSH插件提供了强大的支持

一、安装vscode插件

搜索插件ssh,安装Remote - SSH。安装好之后,会自动安装一个Remote Development插件,用来打开远程ssh主机的文件夹

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_客户端

二、安装ssh客户端

vscode的远程ssh插件会调用ssh客户端去连接远程服务器,所以我们需要在本机上安装open-ssh(mac或linux默认都有ssh客户端,可跳过该步骤)

windows的ssh客户端可以到github上下载:https://github.com/PowerShell/Win32-OpenSSH/releases

下载好了之后,解压即可,接着需要配置环境变量,比如你的open-ssh是解压到D:\necessary\OpenSSH-Win64,可以按以下步骤配置(win10)

我的电脑 --> 属性 --> 高级系统设置 --> 环境变量 --> 选中Path,点击编辑 --> 新增D:\necessary\OpenSSH-Win64;(注意环境变量间用分号隔开)

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_环境变量_02

配置好环境变量后,打开cmd,输入ssh,如果出现提示信息,则表示可用,否则检查环境变量是否配置正确

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_linux_03

注:windows安装完open-ssh客户端后,需要重启一下vscode

三、连接远程主机

打开vscode,使用Ctrl + Shift + P打开命令框,输入remote,点击Connect to Host

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_linux_04

选择Add New Host

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_客户端_05

输入需要远程连接的主机ip或域名

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_linux_06

接下来要选择一个配置文件用于存储远程主机的连接信息,用户目录下的.ssh\config会自动创建,其他目录需要自己手动创建再选择

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_环境变量_07

这样配置文件就有了刚才加的那台需要远程的主机了

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_环境变量_08

我们可以按这样的格式自己添加其他主机:

# Host:远程主机起一个本地名字
# HostName:填写远程服务器的ip或域名
# User:需要用什么用户身份远程登录

Host 10.10.10.10
  HostName 10.10.10.10
  User root

Host test
  HostName 10.200.112.103
  User root

保存好文件之后,再次选择Connect to Host就可以看到有两台远程主机可以连接:

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_配置文件_09

点击test,连接10.200.112.103这台主机,会跳出一个新的vscode窗口,提示输入密码

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_ssh_10

输入正确的密码后敲Enter,vscode界面左下角能够看到现在已经成功连上test这台主机

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_环境变量_11

现在就可以在vscode上像打开本地文件夹一样打开远程文件夹:

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_linux_12

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_ssh_13


使用Ctrl + `呼出的shell也是远程服务器的shell

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_客户端_14

四、配置私钥登录

使用密码登录每次连接远程主机以及打开文件夹的时候都需要输入密码,很不方便,可以使用私钥代替密码登录

  1. 打开cmd,输入ssh-keygen生成rsa密钥对
C:\Users\yourhost>ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\yourhost/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\yourhost/.ssh/id_rsa.
Your public key has been saved in C:\Users\yourhost/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:AcjUQ57H27hitTVVlqfLJiFnSt0+mcx/0ftipwfPjMk yourhost@xxxxxx
The key's randomart image is:
+---[RSA 3072]----+
|   o.+o       o. |
|    o.o+     o. .|
|      o.+  ... o |
|       . =o.= o  |
|        S.+= * +.|
|       . +... %..|
|      o o    + Xo|
|     . .      E.O|
|             ..=+|
+----[SHA256]-----+
  1. id_rsa.pub文件拷贝到远程主机

命令格式: scp <本地文件位置> user@ip:<远程文件位置>

这里是把 C:\Users\yourname.ssh\id_rsa.pub 文件通过ssh传到远程主机的\tmp目录下

D:\>scp C:\Users\yourname\.ssh\id_rsa.pub root@10.200.112.103:\tmp
root@10.200.112.103's password:
id_rsa.pub          100%  573    66.5KB/s   00:00
  1. 远程主机导入公钥
# 登录远程主机
D:\>ssh root@10.200.112.103

# 登录成功后,将公钥导入到authorized_keys文件
cat /tmp/id_rsa.pub  >> ~/.ssh/authorized_keys

注:可以使用ssh-copy-id工具更轻松地导入

  1. 验证通过私钥登录
ssh root@10.200.112.103 -i <id_rsa文件位置>

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_环境变量_15

  1. 验证使用私钥可以成功登录后,更新vscode Remote-ssh的配置文件,添加IdentityFile参数,值为id_rsa文件的路径

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_配置文件_16

以后不用输入密码就可以打开test这台主机了

vscode 连接远程服务器 java无法跳转 vscode 远程连接ssh 远程配置_环境变量_17

如果有多台主机都想要用私钥登录,只需要重复刚才的步骤,将刚才生成的id_rsa.pub内容导入到远程主机的对应文件下,然后更新vscode Remote-ssh配置文件,新增IdentityFile即可