美国服务器告别密码:使用SSH密钥对实现免密登录,更安全更便捷
美国服务器更强的安全性
抗暴力破解:密钥认证不依赖可猜测的密码,攻击者无法通过暴力破解进入。
非对称加密:私钥永远不离开你的电脑,服务器只存储公钥。即使服务器被攻破,攻击者也无法反向推导出你的私钥。
可设置密码短语:私钥本身可以用密码加密,提供双重保护。
更高的便捷性
一键登录:配置完成后,无需每次输入密码。
自动化脚本友好:为 CI/CD、备份脚本等自动化任务提供无缝认证。
更好的访问管理
可以为不同设备、不同用途生成不同的密钥对,实现精细化的访问控制。吊销访问权限时,只需从服务器删除对应的公钥即可。
二、 工作原理简介
私钥:保存在你的本地客户端机器上,必须严格保密,相当于你的"身份证明"。
公钥:可以分发到任何你需要登录的远程服务器上,相当于"门锁"。
当连接时,服务器用公钥加密一个随机挑战信息,只有拥有对应私钥的客户端才能解密并回应这个挑战,从而证明自己的身份。
三、 实战配置:从零到免密登录
步骤 1:在本地客户端生成密钥对
打开你的终端(Linux/macOS)或 Git Bash/PowerShell(Windows),执行以下命令:
bash
ssh-keygen -t ed25519 -C "你的注释(如:my_laptop_2024)"
参数解释:
-t ed25519:指定使用 Ed25519 算法,它更安全、更快,密钥更短。如果你的系统过旧不支持,可以使用-t rsa -b 4096。-C "注释":为密钥添加一个注释,通常用邮箱或设备名,便于识别。
执行过程示例:
bash
Generating public/private ed25519 key pair. Enter file in which to save the key (/home/your_username/.ssh/id_ed25519): # 直接回车,使用默认路径Enter passphrase (empty for no passphrase): # 【强烈建议】输入一个密码短语,为私钥再加一把锁。即使私钥文件泄露,没有密码也无法使用。Enter same passphrase again: # 再次输入密码短语Your identification has been saved in /home/your_username/.ssh/id_ed25519 Your public key has been saved in /home/your_username/.ssh/id_ed25519.pub
现在,你得到了两个文件:
~/.ssh/id_ed25519:你的私钥,务必保密!~/.ssh/id_ed25519.pub:你的公钥,可以随意分发。
步骤 2:将公钥上传到服务器
有多种方法可以将公钥上传到服务器的 ~/.ssh/authorized_keys 文件中。
方法 A:使用 ssh-copy-id(最简单,推荐)
bash
ssh-copy-id -i ~/.ssh/id_ed25519.pub username@server_ip
系统会提示你输入服务器的密码,输入后即可自动完成配置。
方法 B:手动复制(通用)
显示并复制公钥内容:
bash
cat ~/.ssh/id_ed25519.pub
全选并复制输出的全部内容(形如
ssh-ed25519 AAAA... your_comment)。登录服务器:
bash
ssh username@server_ip
在服务器上操作:
bash
# 1. 进入 .ssh 目录,如果不存在则创建mkdir -p ~/.sshchmod 700 ~/.ssh# 2. 将公钥追加到 authorized_keys 文件echo "你刚才复制的公钥内容" >> ~/.ssh/authorized_keys# 3. 设置正确的权限(至关重要!)chmod 600 ~/.ssh/authorized_keys
步骤 3:测试免密登录
现在,从你的本地客户端尝试登录服务器:
bash
ssh username@server_ip
如果一切配置正确:
如果你为私钥设置了密码短语,系统会提示你输入私钥密码,而不是服务器用户密码。
如果你没有设置私钥密码短语,你将直接登录成功。
恭喜!你已成功实现 SSH 密钥对免密登录!
四、 进阶配置与优化
1. 使用 SSH Agent 管理私钥密码
如果你设置了私钥密码,每次登录都要输入会很麻烦。SSH Agent 可以帮你在一段时间内记住解密后的私钥。
bash
# 启动 SSH Agenteval "$(ssh-agent -s)"# 将私钥添加到 Agentssh-add ~/.ssh/id_ed25519# 此时会提示你输入一次私钥密码,之后在当前会话中就不再需要输入了。# 查看已添加的密钥ssh-add -l
为了省去每次打开终端都要执行上述命令的麻烦,可以将它们添加到你的 shell 启动文件(如 ~/.bashrc 或 ~/.zshrc)中。
2. 配置 SSH 客户端(可选但推荐)
编辑本地客户端的 ~/.ssh/config 文件,可以简化连接命令和管理多个服务器。
bash
# 编辑配置文件nano ~/.ssh/config
添加以下内容:
text
Host myserver # 一个简短的别名 HostName server_ip_or_domain # 服务器的真实IP或域名 User your_username # 登录用户名 IdentityFile ~/.ssh/id_ed25519 # 指定使用的私钥文件 Port 22 # 如果服务器SSH端口不是22,在此指定 Host github.com # 为GitHub配置 User git IdentityFile ~/.ssh/id_ed25519_github # 可以为GitHub使用不同的密钥
保存后,你就可以直接使用 ssh myserver 来登录,无需指定用户名和IP,并自动使用正确的密钥。
3. 【重要安全加固】禁用服务器密码登录
在确认使用密钥可以正常登录后,为了彻底杜绝暴力破解,可以禁用服务器的密码登录。
在服务器上操作:
bash
sudo nano /etc/ssh/sshd_config
找到并修改以下行:
text
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no
重启 SSH 服务:
bash
# 注意:确保你的密钥登录100%可用,否则可能把自己锁在服务器外面!sudo systemctl restart sshd# 或者 sudo service ssh restart
五、 故障排查
如果无法登录,请检查以下几点:
权限问题:服务器上
~/.ssh目录权限必须是700,authorized_keys文件权限必须是600。公钥格式:确保
authorized_keys文件中的公钥格式正确,没有换行错误。SELinux:在某些系统(如 CentOS)上,可能需要运行
restorecon -R -v ~/.ssh来修复 SELinux 上下文。查看日志:在服务器上查看
/var/log/auth.log或/var/log/secure来获取详细的错误信息。
总结
使用 SSH 密钥对,你不仅告别了繁琐的密码输入,更重要的是极大地提升了服务器的安全基线。记住核心三步曲:
本地生成:
ssh-keygen上传公钥:
ssh-copy-id或手动复制测试登录:
ssh user@host
养成这个好习惯,让你的服务器管理既安全又轻松。


扫码关注
微信好友
关注抖音