以下内容基本参考博客VSCode配置 SSH连接远程服务器+免密连接教程 - 知乎,内容全面细致,基本上都能一次性成功连接远程服务器,如果不想每次连接服务器时都要输入密码,可以多花几分钟配置以下免密连接(连接好之后非常的方便)

为什么使用vscode?

研究生计算机开发研究python语言使用得多一点,而有界面的码代码并且可以连接远程服务器的平台常用的有两个:pycharm和vscode。个人喜欢并推荐使用vscode,因为比较轻量级,而且插件很多,操作上也比较简单,比较方便。

本机:Windows

服务器:Linux

前置要求:

  • 本机安装Vscode、ssh(命令行输入ssh检查)
  • 打开Vscode时建议使用管理器员权限打开,在这之前遇到了一些报错。

一、远程连接过程

  • 安装插件remote-ssh

remote ssh vscode 断联时间_服务器

  • 点击远程资源管理器、新建远程或者使用快捷键 ctrl + shift + p

remote ssh vscode 断联时间_机器学习_02

  • 在窗口上方弹出的命令框中输入:ssh name@ipname是你服务器的用户名,如果没有创建用户则填root,ip是你的服务器ip地址

remote ssh vscode 断联时间_ssh_03

比如输入ssh -p 2230 dali@202.116.78.103,其中-p 2230表示指定端口号2230,若是没有指定可以直接删除(默认端口是22),输入后按回车。

  • 回车后会弹出选择更新配置文件,点击第一个路径,会自动生成一个config文件
  • 下图为config内容,如果没有自动生成,则手动打开并根据自身情况进行配置,文件的位置在上图的路径。

remote ssh vscode 断联时间_机器学习_04

Host: 这是一个用户定义的别名,用于指代远程主机。可以在在终端中执行 ssh 别名 替代ssh name@ip

HostName: 指定远程主机的实际地址或主机名。

Port: 指定 SSH 连接使用的端口号。

User: 指定连接到远程主机时使用的用户名。在这里,用户名是 liuwf

  • 在 config 文件配置完成并保存后,在VSCode的远程资源管理器中已经出现刚配置的远程服务器,此时点击红框按钮连接即可
  • VSCode会自动进行远程端的设置,窗口上方的中间位置会出现选择平台、输入密码设置,按照自己的情况填写即可。
  • 此时没有意外的话就可以连接上了远程服务器了

remote ssh vscode 断联时间_服务器_05

此时已经可以成功连上服务器了,但是每次连接时都要输入密码,很麻烦【有同学可能为了省事,把密码设置得比较简单,这里还是建议设置复杂一点,简单的密码容易受到攻击,不幸有过这个经历。】

二、如何免密连接

一台机器想要免密访问其他机器,需要把自己的公钥内容发送到别的机器的authorized_keys中去,并在本机config文件中配置私钥文件位置。如下为流程。

1. 生成新的密钥对

打开命令窗口(以windows为例)

remote ssh vscode 断联时间_笔记_06

使用命令ssh-keygen生成新的密钥对。你可以选择在生成密钥对时为其指定不同的文件名。请注意,-f 后的id_rsa_linuxid_rsa_windows 只是示例文件名,你可以根据需要选择其他文件名。

# 在 Linux 和 Mac 上
 ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa_linux
 
 # 在 Windows 上
 ssh-keygen -t rsa -b 2048 -f C:\Users\YourUsername\.ssh\id_rsa_windows
 
 # 如果你只有单平台使用 ssh
 ssh-keygen

注意:当你在多个平台上使用 SSH 连接到不同的远程服务器时,可能需要为每个平台生成和使用不同的密钥对。这是因为每个平台(例如,Windows、Linux、Mac)可能有不同的文件系统和密钥文件位置,同时在安全性的考虑下,不同平台上的密钥对最好是独立的。

输入命令后一路回车

remote ssh vscode 断联时间_机器学习_07

系统会在你指定的路径(本例子为 C:\Users\YourUsername\.ssh)下生成两个文件,分别是id_rsa_windows.pubid_rsa_windows,前者为生成的公钥,后者为私钥 。

2. 添加公钥到远程服务器

将生成的公钥( id_rsa_windows.pub的内容)添加到你远程服务器的 authorized_keys 文件中,以允许连接。

(1). 若你本机是Windows

  • 手动复制:手动复制公钥文件 (id_rsa_windows.pub) 的内容,然后登录到远程服务器,并将内容粘贴到 authorized_keys 文件。如下是我生成的id_rsa_windows.pub文件内容:

remote ssh vscode 断联时间_笔记_08

在远程服务器上,authorized_keys 文件通常存储在用户的 .ssh 目录中。具体路径可能为 ~/.ssh/authorized_keys。例如我的用户名是 liuwf,那么 authorized_keys 文件的路径可能是 /home/liuwf/.ssh/authorized_keys

如果你的.ssh目录或者 authorized_keys 文件不存在,你可以在服务器终端使用以下命令创建它:

# 创建目录
 mkdir ~/.ssh
 # 进入目录
 cd ~/.ssh
 # 创建 authorized_keys 文件
 touch authorized_keys
 # 使用文本编辑器打开 authorized_keys 文件,并将你的公钥内容粘贴到其中
 nano authorized_keys
 # 保存并关闭文本编辑器。

不熟练使用终端,也可以使用VSCode的资源管理器直接创建,粘贴公钥后保存。

remote ssh vscode 断联时间_笔记_09

(2). 如果你本机是Linux

ssh-copy-id 命令通常用于将你的公钥复制到远程服务器的 authorized_keys 文件中。-i 选项用于指定身份文件(即你的公钥文件)。在本机执行如下命令:

ssh-copy-id -i id_rsa_Windows.pub name@ip

确保公钥文件 (id_rsa_Windows.pub) 在本地机器上的正确位置,并且你有读取该密钥的权限。同时,确保远程服务器上的用户 有一个 .ssh 目录,并且 authorized_keys 文件有正确的权限(通常是目录权限为 700authorized_keys 文件权限为 600)。

然后将你的公钥 (id_rsa_Windows.pub) 的内容复制并追加到远程服务器的 authorized_keys 文件中。

3. 配置 SSH 客户端:

将添加公钥到远程服务器后,最后一步便是配置你的主机。

打开你的 SSH 客户端(本机)配置文件(也就是前面生成的config文件,一般在C:\Users\YourUsername\.ssh\config),添加配置(IdentityFile 私钥文件路径),以指定使用哪个私钥文件。下图红框为添加的内容。

remote ssh vscode 断联时间_服务器_10

这样,当你使用 ssh 连接服务器时,SSH 客户端将自动选择相应的私钥文件,就可以实现免密登录了。