第一次用 SSH 密钥登录云服务器:告别密码登录的实战记录
刚开始管理云服务器时,我每次登录都要输一遍密码,密码又长又难记,输错一次就得重来。后来换成 SSH 密钥登录,第一次配置花了十几分钟,之后登录就是一条命令的事,连密码都不用输。这篇记录就是我第一次配密钥登录的完整过程,新手照着做一般不会踩坑。
一、为什么换成密钥登录
密码登录有两个麻烦:一是密码要记、要定期换,输错还会被锁;二是密码可能被暴力猜解。密钥登录用一对密钥代替密码:私钥留在自己电脑上,公钥放到服务器上。登录时服务器用公钥验证你的私钥,私钥不联网传输,安全性更高,也更省事。对只有一两台服务器的新手来说,这一步值得早点做。
二、在自己电脑上生成密钥对
打开本地终端,执行:
ssh-keygen -t ed25519 -C "my-server-key"
一路回车会用默认路径和空口令,生成 ~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)。如果提示文件已存在,说明以前生成过,先别覆盖,确认那对密钥还能用再决定。私钥相当于你家的钥匙,千万不要发给别人,也不要传到代码仓库里。
三、把公钥放到服务器上
最省事的办法是用 ssh-copy-id:
ssh-copy-id root@服务器IP
它会把公钥追加到服务器的 ~/.ssh/authorized_keys 里,并自动处理权限。如果没有这个命令,也可以手动复制:先在服务器上建目录并改好权限,再把公钥内容粘贴进去:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
这里的权限很关键:目录 700、文件 600,太宽松服务器会直接拒绝密钥登录。
四、验证免密登录,排查常见报错
配置好后新开一个终端试试:
ssh root@服务器IP
能直接进去就成功了。如果看到 Permission denied (publickey),先别急着重装,按这个顺序查:第一,确认公钥真的写进了服务器的 authorized_keys,有没有多换行或少字符;第二,检查 .ssh 目录和文件的权限是不是 700 和 600;第三,确认服务器的 /etc/ssh/sshd_config 里 PubkeyAuthentication 是 yes,改完要重启 sshd 服务。还可以用 ssh -v root@服务器IP 看详细日志,它会告诉你到底卡在哪一步。
五、两个让日常使用更顺手的习惯
第一个是写一份 SSH 配置。在本地 ~/.ssh/config 里加几行:
Host myserver
HostName 服务器IP
User root
IdentityFile ~/.ssh/id_ed25519
以后登录只要敲 ssh myserver,IP 和用户名都不用再输。
第二个是等密钥登录稳定用几天后,再考虑关闭密码登录,把 PasswordAuthentication 改成 no 并重启服务。改之前一定确认两件事:密钥登录已经能用,并且当前还有一个已经登录的会话没断开,万一改错了还能进去改回来。
小结
密钥登录就三步:本地生成密钥对、把公钥放到服务器、验证免密登录。最容易踩的坑不是命令本身,而是文件权限和配置文件里的开关。配好之后,登录省事了,服务器也更安全,这是一次投入、长期受益的设置。如果你还在每次输密码登录,不妨今天就花十几分钟换成密钥登录。
- 点赞
- 收藏
- 关注作者
评论(0)