在 Windows 中配置 SSH 快捷登录

Adrain

一、前置条件

1. 生成 SSH 密钥对

密钥对可以在windows下生成,也可以在linux服务器生成,只需要分清公钥和私钥就可以,公钥以.pub结尾,私钥只有一个光秃秃的文件名,公钥可以随意分发,私钥只能自己持有

建议优先使用更安全的 ed25519 算法:

# 在 PowerShell 中执行
ssh-keygen -t ed25519 -C "可以在这里写用途也可以写标记"

或使用传统 兼容的RSA 算法

ssh-keygen -t rsa -b 4096 -C "可以在这里写用途也可以写标记"

密钥存储说明:

  • 私钥路径:C:\Users\你的用户名.ssh\id_ed25519(或 id_rsa)
  • 公钥路径:C:\Users\你的用户名.ssh\id_ed25519.pub(或 id_rsa.pub)

2. 服务器公钥配置

登录目标服务器执行:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
cat >> ~/.ssh/authorized_keys << EOF
# 在此粘贴你的公钥内容
EOF
chmod 600 ~/.ssh/authorized_keys
# 重启 SSH 服务(不同系统命令不同)
sudo systemctl restart sshd   # 大多数 systemd 系统
sudo service ssh restart      # 旧版 SysV 系统

服务端权限验证

# 检查关键目录权限
ls -ld ~/.ssh              # 应显示 drwx------
ls -l ~/.ssh/authorized_keys # 应显示 -rw-------

客户端权限验证(重要!)

  • 确保私钥文件 (id_rsa) 仅当前用户可读: 右键文件 → 属性 → 安全 → 高级 → 禁用继承 → 删除所有用户 → 仅添加当前用户并赋予"读取"权限。
  • 如果是在windows下生成的密钥对,默认已经配置好了权限

技术要点

  • 已生成 SSH 密钥对(私钥 id_rsa + 公钥 id_rsa.pub或私钥 id_ed25519 + 公钥 id_ed25519.pub)
  • 已将公钥上传到服务器的 ~/.ssh/authorized_keys 并重启了ssh服务
  • authorized_keys配置了正确的权限
  • 确保已安装 OpenSSH 客户端(Windows 10/11 默认支持,可通过 PowerShell 输入 ssh 验证)

测试

ssh username@ip或domain [-p 端口] -i "私钥路径"

如果配置正确就可以使用上面的命令成功登录服务器,端口如果是默认的22可以不使用-p 选项,因为使用这样的命令登录会很繁琐,ssh提供了一种快捷简便的配置来实现快捷登录

二、windows快捷登录配置步骤

1. 创建 SSH 配置文件

  • 路径C:\Users\你的用户名\.ssh\config (若目录或文件不存在,请手动创建)
  • 模板示例内容(以下是最基本的配置):
# 生产服务器配置
Host prod-server
  HostName 192.168.1.100
  User admin
  Port 22022
  IdentityFile "D:/ssh-keys/prod_ed25519"

# 测试服务器配置
Host test-server
  HostName test.example.com
  User dev
  IdentityFile "C:/Users/MyUser/.ssh/id_rsa"

2. 配置要点:

  • Host:自定义的简短别名(任意命名,如 prod-serve, test-server),后续通过 ssh prod-serve 登录。
  • 多个服务器可配置多个 Host 区块
  • IdentityFile
    • 私钥路径需用英文双引号包裹(避免路径中的空格和特殊字符报错)。
    • 若使用 Windows 路径分隔符 \,需改为 / 或转义为 \\(请参考示例)。

三、一键登录验证

打开终端(CMD/PowerShell/windows terminal)输入:

ssh myserver #在config中配置的别名

成功后会直接登录服务器,无需输入 IP、端口、用户名或私钥路径!

四、常见问题

  1. 连接被拒绝

    • 检查服务器 SSH 服务是否监听端口 3389netstat -tuln | grep 3389)。
    • 确认防火墙放行该端口。
    # 安装 ufw(如果未安装)
    sudo apt install ufw -y
    
    # 放行 SSH 端口(以 3389 为例)
    sudo ufw allow 3389/tcp
    sudo ufw enable
    sudo ufw reload
    
  2. 密钥权限错误

    • 运行 icacls "D:\OneDrive - mirosoft\ssh-key-all-in-one\id_rsa" /reset 重置权限。
  3. 路径问题

    • 若私钥路径包含空格,必须用双引号。

五、进阶

1. 多密钥管理

推荐目录结构:

D:\ssh-keys\
├─company\
│ ├─dev_ed25519
│ └─prod_rsa
└─personal\
  └─github_ed25519

配置文件示例:

Host github.com
  IdentityFile "D:/ssh-keys/personal/github_ed25519"
  • 建议密钥路径使用全英文,以避免奇怪的错误

六、其他安全建议

  1. 密钥加密:生成时设置 passphrase(如果你确定不会忘记的话)
  2. 端口隐藏:修改默认 22 端口为高位端口
  3. 定期轮换:每 90 天更换密钥对(个人使用不推荐,生产环境根据安全策略来管理)
  4. 创建普通用户来管理vps 非常不建议使用root来管理vps