SSH密钥生成导入,Windows与Linux客户端
SSH密钥生成导入,Windows与Linux客户端
SSH密钥登录比密码更安全,也是管理Linux服务器的标准做法。
本文面向零基础用户,分别说明在Windows和Linux客户端上生成密钥对、把公钥导入服务器,并验证免密登录的完整流程。
跟着步骤做,你能在两台常用系统上成功配置密钥并正常连接。
一、先理解密钥对和准备条件
SSH密钥登录依赖一对密钥:私钥留在自己电脑,公钥放到服务器。
连接时服务器用公钥验证你持有的私钥,匹配成功即允许登录,不需要输入密码。
开始前请确认:
- 你有一台可SSH登录的Linux服务器(云服务器或本地虚拟机均可),知道IP、端口、用户名。
- Windows 10/11 自带OpenSSH客户端;Linux和macOS终端默认包含。
- 如果服务器只允许密钥登录,请先保留一个可用的密码登录会话,避免配置失误被锁在外面。
二、Linux客户端生成与导入密钥
在Linux终端打开后,直接执行密钥生成命令。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
按提示操作:
- 保存路径直接回车,默认存到
~/.ssh/id_rsa。 - 密码短语可留空(直接回车)实现完全免密;若设置密码,每次使用需输入,安全性更高。
生成后检查文件:
ls -l ~/.ssh/
应看到 id_rsa(私钥)和 id_rsa.pub(公钥)。
把公钥导入服务器,最便捷的是 ssh-copy-id:
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 22 root@服务器IP
如果系统没有该命令,手动复制:
cat ~/.ssh/id_rsa.pub | ssh -p 22 root@服务器IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
完成后尝试登录:
ssh -p 22 root@服务器IP
预期结果:不再提示输入密码,直接进入服务器命令行。
三、Windows客户端生成与导入密钥
Windows 10/11 自带OpenSSH,无需额外安装。
按 Win + R 输入 cmd 或打开 PowerShell。
生成密钥:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
默认保存到 C:\Users\你的用户名\.ssh\id_rsa,同样可留空密码短语。
导入公钥到服务器,Windows没有 ssh-copy-id,用以下命令把公钥内容追加到服务器的 authorized_keys:
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh -p 22 root@服务器IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
如果提示需要输入密码,输入服务器密码即可。
然后测试登录:
ssh -p 22 root@服务器IP
验证成功:连接后不提示密码,直接进入服务器。
四、避开这些常见坑
- 权限错误:服务器上
~/.ssh目录权限必须为700,authorized_keys文件权限必须为600,否则SSH会拒绝使用密钥。用chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys修复。 - 端口不是22:所有命令都要加
-p 你的端口,否则连接会被拒绝。 - 私钥泄露:私钥文件不要发给任何人,不要上传到服务器。
- Windows路径问题:在PowerShell中路径用
$env:USERPROFILE,在CMD中可用%USERPROFILE%。 - 服务器禁用密码登录:确认密钥登录成功后,再考虑修改
/etc/ssh/sshd_config中的PasswordAuthentication no,改完重启sshd服务。
五、验证与后续使用
登录成功后,可以查看服务器上的公钥文件确认内容:
cat ~/.ssh/authorized_keys
如果输出与你本地 id_rsa.pub 内容一致,说明导入正确。
之后使用 ssh root@服务器IP 即可免密登录,也可以配置 ~/.ssh/config 简化命令:
Host myserver
HostName 服务器IP
User root
Port 22
IdentityFile ~/.ssh/id_rsa
保存后直接用 ssh myserver 登录。
常见疑问
为什么导入后还是提示输入密码?
检查服务器上 authorized_keys 文件权限和所属用户,确保是600且属于当前登录用户。同时确认连接时使用的用户名与导入公钥时一致。
Windows下找不到.ssh文件夹怎么办?
.ssh 是隐藏文件夹,在文件资源管理器地址栏输入 %USERPROFILE%\.ssh 回车即可进入。
可以在多台电脑使用同一个密钥吗?
可以,但不推荐。更安全的做法是每台设备生成独立密钥,分别导入服务器,便于单独撤销。
密钥登录后还能用密码吗?
默认可以,除非服务器配置禁用了密码登录。建议保留密码登录作为备用,直到确认密钥稳定可用。
按照以上步骤,你已经在Windows和Linux客户端完成了SSH密钥生成导入,并能免密登录服务器。
后续如需更严格的安全策略,可再研究禁用密码登录和限制登录用户。