一、适用环境

  • 本地系统:Windows 10 / Windows 11

  • 开发工具:VS Code + Remote - SSH

  • 远程系统:Ubuntu / CentOS / openEuler / Rocky Linux 等 Linux 系统

  • SSH 客户端:Windows 自带 OpenSSH

配置完成后,可实现:

  • VS Code Remote SSH 不再输入密码

  • ssh 命令免密登录

  • scp、rsync 等工具共享同一套密钥认证


二、检查本地是否已有 SSH 密钥

打开 PowerShell

dir $env:USERPROFILE\.ssh

正常情况下可以看到:

C:\Users\WangRuihua\.ssh

config
id_rsa
id_rsa.pub
known_hosts
known_hosts.old

其中:

文件 说明
id_rsa 私钥(不能泄露)
id_rsa.pub 公钥(复制到服务器)
config SSH 配置文件
known_hosts 已连接服务器记录

如果已经存在 id_rsaid_rsa.pub,无需重新生成密钥。


三、没有密钥时生成 SSH Key

如果没有 id_rsa,执行:

ssh-keygen -t rsa -b 4096

一路按 Enter。

如果询问:

Enter passphrase:

直接按 Enter(留空),即可实现完全免密登录。

生成后:

C:\Users\用户名\.ssh\id_rsa
C:\Users\用户名\.ssh\id_rsa.pub

四、查看本地公钥

执行:

type $env:USERPROFILE\.ssh\id_rsa.pub

例如:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQ...... WangRuihua@PC

复制整整一行。


五、将公钥复制到 Linux 服务器

例如服务器:

IP:188.18.18.169
用户:wzhpc

第一次仍需输入密码登录:

ssh wzhpc@188.18.18.169

进入服务器后执行:

mkdir -p ~/.ssh
chmod 700 ~/.ssh

编辑授权文件:

vim ~/.ssh/authorized_keys

将刚才复制的公钥整行粘贴进去。

保存退出:

Esc
:wq

修改权限:

chmod 600 ~/.ssh/authorized_keys

六、验证服务器权限

执行:

ls -ld ~/.ssh
ls -l ~/.ssh

正常结果:

drwx------ ~/.ssh

-rw------- authorized_keys

若权限不正确:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

七、配置 VS Code SSH Config

编辑:

C:\Users\WangRuihua\.ssh\config

推荐写法:

Host 188.18.18.169
    HostName 188.18.18.169
    Port 22
    User wzhpc
    IdentityFile C:\Users\WangRuihua\.ssh\id_rsa
    IdentitiesOnly yes
    ForwardAgent yes

各参数说明:

参数 说明
Host VS Code 显示名称
HostName 实际服务器 IP
Port SSH 端口
User 登录用户
IdentityFile 私钥路径
IdentitiesOnly yes 强制使用指定私钥
ForwardAgent 转发 SSH Agent(可选)

八、测试 SSH 登录

PowerShell:

ssh wzhpc@188.18.18.169

或者:

ssh 188.18.18.169

如果直接进入:

Last login...
[wzhpc@server ~]$

说明免密登录已经成功。


九、VS Code 使用方法

打开 VS Code。

依次选择:

Ctrl + Shift + P

输入:

Remote-SSH: Connect to Host...

选择:

188.18.18.169

首次连接会安装 VS Code Server。

之后再次连接将不会要求输入密码。


十、快速配置(推荐)

PowerShell 一条命令完成公钥复制:

Get-Content $env:USERPROFILE\.ssh\id_rsa.pub | ssh wzhpc@188.18.18.169 "umask 077; mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys"

只需输入一次服务器密码即可完成配置。


十一、常见问题排查

1. 仍然要求输入密码

查看调试日志:

ssh -vvv wzhpc@188.18.18.169

重点查看是否出现:

Offering public key
Authentication succeeded (publickey)

2. 查看服务器是否已安装公钥

cat ~/.ssh/authorized_keys

确认其中包含本机 id_rsa.pub 的内容。


3. 检查 SSH 服务配置

sudo grep -E "PubkeyAuthentication|AuthorizedKeysFile" /etc/ssh/sshd_config

应包含:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

如修改过配置,重启 SSH 服务:

Ubuntu:

sudo systemctl restart ssh

CentOS / openEuler:

sudo systemctl restart sshd

4. SELinux 导致密钥失效(CentOS/openEuler)

如果权限正确但仍无法免密登录,可执行:

restorecon -Rv ~/.ssh

十二、最佳实践

建议在 SSH 配置中统一指定私钥:

IdentityFile C:\Users\WangRuihua\.ssh\id_rsa
IdentitiesOnly yes

这样即使本机存在多个 SSH 密钥,也能确保 VS Code 和 SSH 使用正确的密钥进行认证。

完成以上配置后,Windows 的 SSH、VS Code Remote SSH、scp、sftp、rsync 等工具都将共用这套密钥认证,实现统一免密登录。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐