VSCode Remote-SSH使用密钥对免密登录云服务器
1.安装Remote-SSH插件
点击Extensions扩展(快捷键Ctrl+Shift+X),输入Remote。
点击Remote-SSH(微软官方认证标记),然后install。
点击Remote Explorer(微软官方认证标记),然后install。
点击Remote - SSH: Editing Configuration Files(微软官方认证标记),然后install。
也可以直接安装 “Remote Development” 扩展
2.安装Git
点击这里到Git官方https://git-scm.com/
https://git-scm.com/
下载Windows版本Git,然后安装,根据自己的需求选择即可(大部分默认即可)。
3.Git Bash生成密钥
3.1打开Git Bash
3.2输入生成密钥指令
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
或者
ssh-keygen -t ed25519 -C "your_email@example.com"
其中,your_email@example.com改为自己的邮箱。这个电子邮件地址不一定要与读者的实际电子邮件地址相同,通常填写一个能够识别读者身份的信息。
3.3输入生成密钥路径
Enter回车默认生成密钥在"/c/Users/user/.ssh/id_rsa"路径下。因为博主之前生成过密钥连接其他云服务器了,所以不能直接覆盖之前的密钥,这里重新起一个密钥名称id_rsa_mywebsite
。如果读者之前没用生成过密钥可以直接回车默认即可。
3.4是否输入密钥密码
即连接云服务器的时候,是否需要密码验证密钥,这里选择否(牢记初心),Enter回车即可。
3.5还是默认回车
3.6密钥生成成功
3.7查看生成的密钥文件
ls ~/.ssh
- id_rsa_mywebsite:这是私钥文件。它应该被妥善保存在本地机器上,不应共享或分发给其他人。私钥用于身份验证,证明读者密钥的合法拥有者。
- id_rsa_mywebsite.pub:这是公钥文件。它可以安全地分发到需要连接的远程服务器上。远程服务器将公钥存储在authorized_keys文件中,用于在收到连接请求时验证读者的身份。
4.将公钥上传到云服务器
公钥文件是id_rsa_mywebsite.pub。读者需要将其内容复制到云服务器的~/.ssh/authorized_keys文件中。还是在Git Bash终端里面输入下面命令:
ssh-copy-id -i ~/.ssh/id_rsa_mywebsite.pub user@remote_host
其中,~/.ssh/id_rsa_mywebsite.pub是公钥所在路径和文件,user是登录云服务器的用户名,remote_host是云服务器的域名或者公网IP。
4.1输入云服务器的登陆密码,回车。
4.2公钥上传和添加成功
4.3检查云服务器authorized_keys文件是否存在
使用PowerShell登录云服务器,输入下面命令
ssh user@remote_host
user改为自己的用户名,remote_host改为自己的域名或者公网IP
可用看到在~/.ssh/目录下存在authorized_keys文件,即是公钥上传成功。
5.在VSCode中配置密钥登录信息
5.1VSCode中,点击Remote-Explorer
依次选择Remotes(Tunnel/SSH)->SSH
5.2输入配置密钥登录信息
点击小齿轮图标,然后选择第一个"C:\User\user\.ssh\config"。
输入下面的配置内容
Host remote_server
HostName remote_server
User your_username
# 如果远程服务器使用非标准 SSH 端口,可以在这里指定端口号
Port 22
# 指定用于连接到远程服务器的私钥文件路径
IdentityFile ~/.ssh/id_rsa_mywebsite
# Compression yes # 启用 SSH 数据压缩,可以加快传输速度
# ForwardX11 yes # 启用 X11 转发,允许远程服务器显示图形界面
# TCPKeepAlive yes # 启用 TCP KeepAlive,保持 SSH 连接活动状态
# ServerAliveInterval 60 # 设置客户端向服务器发送心跳包的时间间隔,单位为秒
# ServerAliveCountMax 3 # 设置客户端发送心跳包的最大次数,超过次数后连接将断开
# RemoteForward 52698 localhost:52698 # 设置远程端口转发,将远程服务器的端口52698转发到本地的52698端口
Host:主机标识符,可以起一个方便记录的名字。
HostName:云服务器的域名或者公网IP。
User:云服务器登录用户名。
Port:默认22端口。
IdentityFile:刚才生成的密钥文件路径。
6.连接到远程服务器
6.1刷新主机列表
输入完成后,点击刷新按钮。然后点击要登录服务器的箭头按钮连接云服务器即可。