SSH 密钥登录入门:一次配置,告别密码登录
如果你经常用 SSH 登录远程服务器,一定经历过这样的场景:每次都要输入一长串密码,输错一次就得重来;密码还可能被暴力破解工具盯上。其实有一种更安全、更省事的办法:SSH 密钥登录。配置一次,之后登录不用再输密码,而且安全性比密码高得多。
密码登录有什么问题
密码登录有两个天然短板。第一,密码是人能记住的东西,就意味着它不会太复杂,也就扛不住暴力破解——攻击者可以 24 小时不停地尝试常见密码。第二,密码需要在每次登录时通过网络传输验证,一旦泄露,任何人都能用它登录你的服务器。
密钥登录换了一个思路:不再靠“你知道什么”来验证身份,而是靠“你拥有什么”。你手里有一把私钥,服务器上放着对应的公钥,只有两者配对成功才能登录。私钥从不离开你的电脑,攻击者就算拿到公钥也毫无用处。
一对密钥是怎么工作的
可以把这对密钥想象成一把锁和一把钥匙。公钥是锁,你把它装到服务器上,公开给谁看都没关系;私钥是钥匙,只留在你自己的电脑里,绝不能发给别人、传到网盘或者贴到聊天记录里。
登录时,服务器会出一道只有私钥能解的题目,你的电脑用私钥解开并作答,服务器验证通过就放行。整个过程私钥本身不会在网络上传输,这就是它比密码安全的原因。
三步完成配置
第一步,在本地生成密钥对。打开终端执行:
ssh-keygen -t ed25519 -C "你的邮箱"
一路回车会使用默认路径和空口令。追求更高安全性的话,可以给私钥再设一个口令(passphrase),这样即使私钥文件被别人拿到,没有口令也用不了。生成后你会得到两个文件:~/.ssh/id_ed25519 是私钥,~/.ssh/id_ed25519.pub 是公钥。
第二步,把公钥传到服务器。最省事的办法是:
ssh-copy-id 用户名@服务器地址
它会把公钥追加到服务器的 ~/.ssh/authorized_keys 文件里,并自动处理好文件权限。如果你是第一次接触,也可以手动把 .pub 文件的内容复制过去,效果一样。
第三步,测试免密登录:
ssh 用户名@服务器地址
如果直接进了服务器而没有问你要密码,说明配置成功了。注意:第一次连接时系统会问你是否信任该主机的指纹,确认无误后输入 yes 即可。
配置好之后的两件小事
第一件,确认密钥登录生效后,可以考虑关闭服务器的密码登录。在服务器的 /etc/ssh/sshd_config 里把 PasswordAuthentication 改成 no,然后重启 sshd 服务。这样暴力破解密码的路就被彻底堵死了。不过改之前务必确认密钥登录已经可用,否则可能把自己锁在门外。
第二件,备份好私钥。私钥丢了就等于钥匙丢了,服务器就进不去了。可以把它加密备份到自己可信的位置,但千万不要把它上传到公开仓库、群聊或者任何不受信任的地方——公钥可以公开,私钥永远不能。
常见问题
密钥换了电脑怎么办?在新电脑上重新生成一对密钥,再把新公钥追加到服务器的 authorized_keys 里即可,旧的密钥对也可以保留或删除。
一台电脑要登录多台服务器怎么办?同一对密钥可以用在多台服务器上,每台服务器都放上同一个公钥就行。也可以为不同服务器生成不同的密钥,用 ~/.ssh/config 文件分别指定。
私钥设了口令,每次登录还是要输口令,岂不是没省事?可以用 ssh-agent 代理:执行 ssh-add ~/.ssh/id_ed25519 后,在本次会话内只需输入一次口令,后续登录就都不用再输了。
小结
SSH 密钥登录的配置只需要几分钟:本地生成密钥对、把公钥传到服务器、测试登录。换来的却是每天登录时省下的无数次密码输入,以及一道密码登录给不了的安全防线。如果你还在用密码登录服务器,今天就可以花十分钟把它换掉。
- 点赞
- 收藏
- 关注作者
评论(0)