「Code」Remote - SSH

SSH,不止VS Code上的。

开启 SSH 服务

有些系统的 SSH 服务默认没有开启。在被远程的系统的终端中输入 ssh 127.0.0.1,没错的话可以 Ctrl + c 停止;提示出错或没有安装,请先安装 ssh 服务器。

以 Ubuntu 等 Debian 系为例:

1
sudo apt install openssh-server

然后开启 SSH 服务,并设置自启动。

1
2
sudo systemctl start sshd  #启动服务
sudo systemctl enable sshd #设置自启动

Debian 系给 sshd 的 service 起名叫 ssh,不知怎么想得。不过 sshd 也还能用,如果出错试试将 sshd 换成 ssh。

SSH登录命令

ssh 登陆命令的一般格式为 ssh user@HostName,如:

1
ssh root@0.0.0.0

如果需要指定端口就增加-p <port>,不指定端口使用默认的22端口,如:

1
ssh -p 8022 root@0.0.0.0

每次输入太长也不好记,可以自己设置一个别名,别名配置保存在 ~/.ssh/config 中。

下面是一个例子,注释是 Github Copilot 提示的,我看是对的,说明有人写过,哈哈:

Host demo    # 主机别名,可以自定义
  HostName 0.0.0.0  # 服务器地址
  Port 8022  # 端口号,可以不写,默认22
  User root  # 登录用户名,可以不写,默认当前用户

VS Code SSH 使用

安装扩展

安装该扩展:SSH:Remote - SSH

也可以直接安装这个远程开发的扩展包:Remote Development,包含WSL、SSH、Docker等。

安装后打开侧栏的“远程资源管理器”(SSH Targets)即可看到 SSH 列表。如果你 ~/.ssh/config 有内容会显示,没有的话列表是空的。

要自己添加的话点击“+”按钮

image

或点击VSCode左下角绿色按钮,选择下图所示选项

image

输入 SSH 登陆命令。

确定后选择将刚刚的配置储存到哪里,选第一个就行。

image

开始连接

点击如图“新窗口打开”或右下角的“Connect”,会打开一个新的窗口。

image

第一次连接可能需要你选择连接的是哪个平台。

image

随后输入密码,完成连接。

image

如何使用

接下来可以打开

  • 文件(夹)
  • 终端

进行使用。

打开过的文件夹会在资源管理器中显示,可以方便以后快速打开。

image

SSH 免密登录

SSH认证方式有两种:

  • 用户名密码认证
  • 公钥私钥认证

上面就属于第一种用户名密码认证,如果不配置密钥的话每次连接都要输入密码进行验证。下面说第二种方式。

生成本地公钥

本地终端中执行

1
ssh-keygen

生成的文件就放在了~/.ssh目录中,图为Windows的样例。

image

~是指当前用户的主目录。Unix-like 上即 ~$HOME 所指;Windows 上为 %USERPROFILE% 所指,在地址栏输入 %USERPROFILE% 即可进入。

添加到“已授权”文件中

将本地用户~/.ssh/id_rsa.pub中的内容添加到被远程用户的~/.ssh/authorized_keys文件中,这个本地用户以后就可以免密登录了。

可以使用ssh-copy-id,用法和 ssh 一样,只需把 ssh 换成 ssh-copy-id 即可。(Windows上的OpenSSH好像没有?)
如:

ssh-copy-id user@HostName

也可以在VS Code连接成功后点击“打开文件夹”,打开根目录/或者当前用户主目录~,自己复制粘贴(没有已授权文件的话自己创建一下)。

image