SSH 入门:第一次用密钥登录服务器,不再每次输密码
如果你每天都要用密码登录一台 Linux 服务器,迟早会觉得麻烦:密码要记、要输,还容易被暴力猜测。SSH 密钥登录是更常用的做法:本地生成一对密钥,把公钥放到服务器上,以后登录时用私钥证明身份,不用每次输密码。
1. 先理解一对密钥
密钥对由两部分组成:私钥留在自己的电脑上,相当于钥匙;公钥放到服务器上,相当于锁。登录时服务器用公钥出题,只有持有对应私钥的人才能答对。私钥不要发给别人,也不要上传到公开仓库。
2. 生成密钥
在本地终端执行:
ssh-keygen -t ed25519 -C "my-laptop"
一路回车会使用默认路径和空口令,适合入门练习;如果电脑是多人共用,建议设置一个口令短语,给私钥再加一层保护。生成后默认会得到两个文件:~/.ssh/id_ed25519 是私钥,~/.ssh/id_ed25519.pub 是公钥。
3. 把公钥放到服务器
最省事的方法是用 ssh-copy-id:
ssh-copy-id user@服务器地址
它会把公钥追加到服务器的 ~/.ssh/authorized_keys 里。第一次执行仍需输入密码,成功后就可以测试免密登录:
ssh user@服务器地址
如果没有 ssh-copy-id,也可以手动把公钥内容追加到服务器的 authorized_keys 文件,注意文件权限:~/.ssh 目录一般为 700,authorized_keys 一般为 600,权限太开放时 SSH 会拒绝使用密钥。
4. 用配置文件简化命令
服务器多了以后,不必每次都敲用户名和地址。编辑本地的 ~/.ssh/config:
Host myserver
HostName 服务器地址
User user
IdentityFile ~/.ssh/id_ed25519
之后直接 ssh myserver 即可。Host 是自己起的别名,HostName 才是真实地址。
5. 常见问题
- 仍提示输入密码:先检查公钥是否真的写进了服务器的
authorized_keys,再检查该文件和.ssh目录权限。 - 提示私钥权限太开放:把私钥权限改回仅自己可读,例如
chmod 600 ~/.ssh/id_ed25519。 - 换电脑后登录不上:私钥只在原来那台电脑上,换电脑需要重新生成一对密钥并把新公钥加到服务器,或者把私钥安全地迁移过去。
小结
记住三步就够了:本地生成密钥对,把公钥放到服务器,用私钥登录。先在一台自己的测试服务器上练一遍,确认免密登录成功,再考虑是否关闭密码登录。
- 点赞
- 收藏
- 关注作者
评论(0)