SSH 免密登录:三条命令告别反复输密码
【摘要】 每次 ssh 连服务器都要输一遍密码,输错三次还被锁定——这日子我过够了。其实 SSH 早就支持"免密登录":配一次,以后连服务器就像开自己家门,直接进。 先理解:钥匙和锁免密登录的本质是"钥匙开锁":你在自己电脑上生成一对钥匙:私钥(自己留着,谁也别给)+ 公钥(可以随便发)把公钥放到服务器上,相当于给服务器装了一把"只认你钥匙的锁"以后连接时,服务器用公钥出题,只有你的私钥能答对——答对...
每次 ssh 连服务器都要输一遍密码,输错三次还被锁定——这日子我过够了。其实 SSH 早就支持"免密登录":配一次,以后连服务器就像开自己家门,直接进。
先理解:钥匙和锁
免密登录的本质是"钥匙开锁":
- 你在自己电脑上生成一对钥匙:私钥(自己留着,谁也别给)+ 公钥(可以随便发)
- 把公钥放到服务器上,相当于给服务器装了一把"只认你钥匙的锁"
- 以后连接时,服务器用公钥出题,只有你的私钥能答对——答对了就放行,不用密码
三步配好
第 1 步:在自己电脑上生成钥匙对
ssh-keygen -t ed25519 -C "my-laptop"
一路回车用默认设置就行。完成后得到两个文件:~/.ssh/id_ed25519(私钥,绝不外传)和 ~/.ssh/id_ed25519.pub(公钥)。
第 2 步:把公钥送到服务器上
ssh-copy-id user@服务器IP
这条命令会让你最后输一次密码,然后自动把公钥追加到服务器的 ~/.ssh/authorized_keys 里。
第 3 步:验证
ssh user@服务器IP
如果直接进去了,一次密码都没问——成了。
两个常见坑
坑 1:权限太开放会被 SSH 拒绝。 服务器端这三个路径的权限必须收紧,否则 SSH 会觉得不安全而直接无视你的钥匙:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
坑 2:ssh-copy-id 不可用(比如某些精简系统)。 手动复制也行:
# 在自己电脑上看公钥内容,复制整行
cat ~/.ssh/id_ed25519.pub
# 在服务器上追加进去
echo "粘贴的那一行" >> ~/.ssh/authorized_keys
进阶:给常用服务器起个短名
服务器多了,IP 记不住?在自己电脑的 ~/.ssh/config 里写:
Host myserver
HostName 1.2.3.4
User ubuntu
Port 22
以后 ssh myserver 就行,IP、用户名、端口全省了。配合免密登录,连服务器变成一件没有摩擦的事。
一句话总结
ssh-keygen 生成钥匙 → ssh-copy-id 把公钥送上服务器 → 以后免密直连。私钥是你的命根子,只留在自己电脑上;公钥随便发,它只能开锁不能配钥匙。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)