每天登录服务器输密码输到手软?三分钟配置SSH免密登录,效率翻倍

你每天输多少次密码?

打开终端,`ssh user@server`,输入密码——这个动作你一天重复了多少次?10次?20次?如果再加上 `scp` 传文件、`git push` 推代码,一天输个三四十次密码毫不夸张。

每天登录服务器输密码输到手软?三分钟配置SSH免密登录,效率翻倍封面

更扎心的是,每次输错还得重来。有调查显示,开发者平均每天在密码输入上浪费 8-12 分钟。

今天就教你一个一劳永逸的办法:SSH 密钥登录。配置只需三分钟,之后所有服务器、GitHub、GitLab 通通不用再输密码。

先搞懂原理:公钥和私钥

SSH 密钥登录的核心是一对”钥匙”:

私钥(Private Key):你死死攥在手里的那把钥匙,绝对不能给任何人。存在你的电脑上(通常是 `~/.ssh/id_ed25519`)。

公钥(Public Key):你可以随便分发的”锁”,放到任何你想登录的服务器上(`~/.ssh/authorized_keys` 文件里)。

用个比喻:公钥是把锁,你可以把它装在任何门上;私钥是唯一的钥匙,只有你能打开这些门。别人拿到锁(公钥)也没用,因为他们没有钥匙(私钥)。

登录时,服务器用你的公钥出一道数学题,只有拿着对应私钥的电脑才能解出来。全程不需要传输密码,比密码登录更安全

第一步:生成密钥对

打开终端,输入一行命令:

ssh-keygen -t ed25519 -C "your_email@example.com"

参数解释:

`-t ed25519`:使用 Ed25519 算法(2025 年推荐标准,比老旧的 RSA 更快更安全,密钥也更短)

`-C`:加个注释方便日后辨认(一般用邮箱)

然后一路按回车就行:

1. 保存位置 → 默认 `~/.ssh/id_ed25519`,直接回车

2. 设置密码短语(passphrase)→ 可以直接回车跳过(偷懒方案),也可以设一个短密码(更安全)

运行完后,`~/.ssh/` 目录下会多出两个文件:

ls -la ~/.ssh/
# id_ed25519      ← 私钥!打死不能给别人
# id_ed25519.pub  ← 公钥!可以到处分发

第二步:把公钥放到服务器上

最简单的方式,一行命令搞定:

ssh-copy-id user@your-server.com

这条命令会自动把你的公钥追加到服务器的 `~/.ssh/authorized_keys` 文件里。输入一次密码(最后一次!),之后就不用再输了。

如果你的系统没有 `ssh-copy-id`(比如 Windows 的 Git Bash),可以手动操作:

cat ~/.ssh/id_ed25519.pub | ssh user@your-server.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

第三步:验证

ssh user@your-server.com

如果直接进去了——恭喜,免密登录配置成功! 🎉

常见踩坑指南

新手最容易遇到的三个问题:

1. “Permission denied (publickey)” 还是弹出来

八成是权限问题。服务器上的 `.ssh` 目录和 `authorized_keys` 文件权限必须严格正确:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

2. 换了电脑/重装了系统

重新生成一对密钥,把新的公钥加到服务器上就行。旧密钥会自动失效(因为新私钥和旧公钥不配对)。

3. 每次还是要输 passphrase?

如果你生成密钥时设了密码短语,每次用密钥时确实还要输一次。想让这步也自动化?把密钥加到 SSH Agent:

ssh-add ~/.ssh/id_ed25519

输一次 passphrase,之后当前会话都不用再输了。

彩蛋:GitHub 也用这一套

你每天 `git push` 要输的 GitHub 密码,其实也能用 SSH 密钥解决:

# 1. 查看你的公钥
cat ~/.ssh/id_ed25519.pub

# 2. 复制整段内容,打开 GitHub → Settings → SSH and GPG keys → New SSH key

# 3. 粘贴,保存。然后把本地仓库的 remote 改成 SSH 地址:
git remote set-url origin git@github.com:你的用户名/仓库名.git

从此 `git push` 再也不用输密码。

总结

| 操作 | 命令 | 频率 |

|——|——|——|

| 生成密钥 | `ssh-keygen -t ed25519 -C “email”` | 一次 |

| 上传公钥 | `ssh-copy-id user@server` | 每台服务器一次 |

| 加入 Agent | `ssh-add ~/.ssh/id_ed25519` | 每次开机一次 |

三分钟配置,省下每天10分钟,一年就是60个小时。 这笔时间投资,值不值?

现在就去配吧——趁下一个密码还没输错之前。


— END —
LC 智趣厅 · 科技与生活的交点
ihygg.cn

滚动至顶部
微信公众号:LC智趣厅

扫码关注微信公众号
LC智趣厅