以下内容基本参考博客VSCode配置 SSH连接远程服务器+免密连接教程 - 知乎,内容全面细致,基本上都能一次性成功连接远程服务器,如果不想每次连接服务器时都要输入密码,可以多花几分钟配置以下免密连接(连接好之后非常的方便)
为什么使用vscode?
研究生计算机开发研究python语言使用得多一点,而有界面的码代码并且可以连接远程服务器的平台常用的有两个:pycharm和vscode。个人喜欢并推荐使用vscode,因为比较轻量级,而且插件很多,操作上也比较简单,比较方便。
本机:Windows
服务器:Linux
前置要求:
- 本机安装Vscode、ssh(命令行输入ssh检查)
- 打开Vscode时建议使用管理器员权限打开,在这之前遇到了一些报错。
一、远程连接过程
- 安装插件remote-ssh
- 点击远程资源管理器、新建远程或者使用快捷键 ctrl + shift + p
- 在窗口上方弹出的命令框中输入:
ssh name@ip
,name
是你服务器的用户名,如果没有创建用户则填root,ip
是你的服务器ip地址
比如输入
ssh -p 2230 dali@202.116.78.103
,其中-p 2230
表示指定端口号2230,若是没有指定可以直接删除(默认端口是22),输入后按回车。
- 回车后会弹出选择更新配置文件,点击第一个路径,会自动生成一个config文件
- 下图为config内容,如果没有自动生成,则手动打开并根据自身情况进行配置,文件的位置在上图的路径。
Host: 这是一个用户定义的别名,用于指代远程主机。可以在在终端中执行
ssh 别名
替代ssh name@ip
。HostName: 指定远程主机的实际地址或主机名。
Port: 指定 SSH 连接使用的端口号。
User: 指定连接到远程主机时使用的用户名。在这里,用户名是
liuwf
。
- 在 config 文件配置完成并保存后,在VSCode的远程资源管理器中已经出现刚配置的远程服务器,此时点击红框按钮连接即可
- VSCode会自动进行远程端的设置,窗口上方的中间位置会出现选择平台、输入密码设置,按照自己的情况填写即可。
- 此时没有意外的话就可以连接上了远程服务器了
此时已经可以成功连上服务器了,但是每次连接时都要输入密码,很麻烦【有同学可能为了省事,把密码设置得比较简单,这里还是建议设置复杂一点,简单的密码容易受到攻击,不幸有过这个经历。】
二、如何免密连接
一台机器想要免密访问其他机器,需要把自己的公钥内容发送到别的机器的authorized_keys中去,并在本机config文件中配置私钥文件位置。如下为流程。
1. 生成新的密钥对
打开命令窗口(以windows为例)
使用命令ssh-keygen
生成新的密钥对。你可以选择在生成密钥对时为其指定不同的文件名。请注意,-f
后的id_rsa_linux
和 id_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)可能有不同的文件系统和密钥文件位置,同时在安全性的考虑下,不同平台上的密钥对最好是独立的。
输入命令后一路回车
系统会在你指定的路径(本例子为 C:\Users\YourUsername\.ssh
)下生成两个文件,分别是id_rsa_windows.pub
和id_rsa_windows
,前者为生成的公钥,后者为私钥 。
2. 添加公钥到远程服务器
将生成的公钥( id_rsa_windows.pub
的内容)添加到你远程服务器的 authorized_keys
文件中,以允许连接。
(1). 若你本机是Windows:
- 手动复制:手动复制公钥文件 (
id_rsa_windows.pub
) 的内容,然后登录到远程服务器,并将内容粘贴到authorized_keys
文件。如下是我生成的id_rsa_windows.pub
文件内容:
在远程服务器上,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的资源管理器直接创建,粘贴公钥后保存。
(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
文件有正确的权限(通常是目录权限为 700
,authorized_keys
文件权限为 600
)。
然后将你的公钥 (id_rsa_Windows.pub
) 的内容复制并追加到远程服务器的 authorized_keys
文件中。
3. 配置 SSH 客户端:
将添加公钥到远程服务器后,最后一步便是配置你的主机。
打开你的 SSH 客户端(本机)配置文件(也就是前面生成的config文件,一般在C:\Users\YourUsername\.ssh\config
),添加配置(IdentityFile
私钥文件路径),以指定使用哪个私钥文件。下图红框为添加的内容。
这样,当你使用 ssh 连接服务器时,SSH 客户端将自动选择相应的私钥文件,就可以实现免密登录了。
最后,科研之路任重而道远,祝我们能学业顺利,嘻嘻!