ssh与vscode remote-ssh插件使用指南

1、基础概念

SSH 是一组用于登录远程主机的通讯协议,透过该协议登录后,可以在本地电脑上映射远程主机的终端环境,并操作远程主机上的文件。除终端环境外,SSH 协议还可以

  • 配合支持的 IDE 在本地直接编辑、调试远程主机上的代码文件
  • 使用 SFTP 进行本地与远端之间的文件传输

习惯上,称本地主机为客户端(Client),称被连接的远程主机为服务端(Server)。

2、安装

macOS、Linux、Unix

这些操作系统一般内建了 SSH 客户端,可以直接在终端窗口中输入 ssh -V 查看,示例:

alan@Alan-MagicBook:~$ ssh -V
OpenSSH_7.6p1 Ubuntu-4ubuntu0.4, OpenSSL 1.0.2n  7 Dec 2017
Windows 10 1809 及以上

自 1809 更新后 Windows 10 已内建了 SSH 客户端支持,但可能需要手动启用。首先在 CMD 中输入 ssh -V 确认是否已经启用该功能,若提示找不到命令,则需要手动启用:
打开 Windows 设置 → 应用 → 应用和功能 → 可选功能
点 添加功能 ,找到 OpenSSH 客户端,点击安装
根据提示完成安装后,在 CMD 环境下测试是否可用。
更早版本的 Windows 系统
针对这些操作系统,你应该首先考虑升级你的系统。或者选择以下两种方式之一:

  • 手动安装 OpenSSH 。
  • 使用第三方的 SSH 客户端软件,例如PuTTY,XShell 等。如果 Windows 上安装了 Git,那么在 Git Bash 中也可以使用 SSH。

3、连接远程

SSH 连接远程主机时,至少需要知道用户名、用户密码、主机地址、端口四个参数,请向管理员询问。然后打开终端窗口,输入:

ssh [用户名]@[主机地址] -p [端口]

根据提示输入用户密码(在终端输入密码时可能不会回显)。若询问是否信任新的证书指纹,输入 yes 。
示例:

C:\Windows\system32>ssh [email protected].**.** -p 22
wy@*.*.*.*'s password:


Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 5.3.0-28-generic x86_64)
wy@zhougroup-1080Ti:~$

至此已经登录服务端,可以在该终端中进行操作。

4、进阶配置

总体上,使用 SSH 不需要进行什么特别的配置。但以下几个基础配置可以显著提高 SSH 易用性,推荐操作。

免密码登录

默认情况下,SSH 通过密码进行用户认证,但每次都输入密码有诸多不便;此外为了安全,管理员可能手动禁用基于密码的认证方式。SSH 另外提供了基于秘钥的认证方式。注意!不要为了方便给账户设置简单密码!
在客户端生成秘钥。客户端秘钥的默认保存地址为 ~/.ssh/id_rsa 与 ~/.ssh/id_rsa.pub ,针对 Windows 系统,则是 C:\Users[用户名].ssh\id_rsa 与 C:\Users[用户名].ssh\id_rsa.pub 。若本机已有秘钥,跳过本步;否则在终端输入 ssh-keygen -t rsa -C “LocalKeyPair” ,然后一路回车。注意,如果是 Windows 系统,尽量保证秘钥路径不包含中文。示例:

C:\Windows\system32>ssh-keygen -t rsa -C "LocalKeyPair"
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\Alan/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:/Users/Alan/.ssh/id_rsa.
Your public key has been saved in C:/Users/Alan/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:7fiW5By4HeBoXb75*****igjGjz6pbUL6eRzI8WllI4 LocalKeyPair
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|     .           |
|    o . ..o      |
|   = o +S*..     |
| .E.= o =oB .    |
|  B.o.  .X.B o   |
| =oB+.o o.X . .  |
|..*=o+ o .....   |
+----[SHA256]-----+

在服务端导入公钥。首先根据上一节的步骤登录远程主机,然后修改远程主机的 ~/.ssh/authorized_keys 文件(若不存在该目录或者不存在该文件,请手动创建)。将第一步中创建的 ~/.ssh.id_rsa.pub 文件内容添加进 authorized_keys 文件中,最后设置合适的权限。示例:

# 创建对应目录与文件
mkdir ~/.ssh && touch ~/.ssh/authorized_keys
# 修改 authorized_keys,将客户端创建的 ~/.ssh/id_rsa.pub 文件粘贴进去
vi ~/.ssh/authorized_keys
# 设置权限
chmod 600 ~/.ssh/authorized_keys

在客户端进行配置。修改本机的 ~/.ssh/config 文件(若不存在手动创建),添加以下配置:

Host lab
    HostName [主机地址]
    Port [端口]
    User [用户名]
    IdentityFile ~/.ssh/id_rsa

之后在终端可以通过主机助记符登录远端: ssh lab 。示例:

C:\Windows\system32>ssh lab
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 5.3.0-28-generic x86_64)
wy@zhougroup-1080Ti:~$

防止 SSH 连接自动中断
在客户端 ~/.ssh/config 中添加以下配置:

Host *
    ServerAliveInterval 30
    ServerAliveCountMax 3

5、使用 SFTP 进行文件传输

SFTP 是 SSH 协议的附加组件,可以用来实现客户端与服务端互传文件。有两种方式使用:命令行,或者第三方 GUI 软件。

命令行使用

假设已经完成上一节的免密码登录配置,则可以轻松地通过 sftp lab 命令登录远程。示例:

C:\Windows\system32>sftp lab1
Connected to lab1.
sftp> 

以下是几条基本的命令:
更改当前工作路径 lcd cd
显示当前工作路径 lpwd pwd
列出当前目录文件 lls ls
创建目录 lmkdir mkdir
从本地上传文件 put [本地文件路径] -
从远程下载文件 get [远程文件路径] -
从本地上传文件夹 put -r [本地路径] [远程路径] -
从远程下载文件夹 get -r [远程路径] [本地路径] -

6、使用 VS Code Remote 进行远程调试

VS Code 可以透过 SSH 通道开启一个映射,将远程主机某个工作目录映射到 VS Code 中,在本地形成一个虚拟空间。此时在 VS Code 中进行的修改会与远程同步,远程的修改也会体现在本机的 VS Code 窗口中。此外还支持直接在本机进行代码调试与检查。

首先安装插件。在插件列表搜索 remote ,找到 Remote - SSH 插件,点击安装。完毕后可能需要重启 VS Code。

点击底栏最左侧的按钮,在顶部弹出窗口中选择 Remote-SSH: Connect to Host ,并在列表中选择远程主机名(这里假设已经完成 SSH 免密登录配置)。
点击打开文件夹,输入路径即可打开远程目录。自此在 VS Code 中做的编辑与文件操作将同步到远程主机。

注意,某些本地插件需要在远程主机重新安装。在插件列表中找到对应插件,点击 在 SSH:lab 中安装 字样。安装后可能需要重载 VS Code。

你可能感兴趣的:(自动驾驶,深度学习)