假设现在是 root 用户 登录的 Ubuntu 22.04。
总目标(你做完会得到什么)
- ✅ 一个普通用户:
admin - ✅
admin拥有 sudo 权限 - ✅ SSH 使用 密钥登录
- ✅ 禁止密码 SSH 登录
- ✅ 不会把你自己锁死在服务器外
第 1 步:创建新用户 admin
adduser admin
过程中会:
- 要你设置 admin的登录密码(这是 sudo 用的,不是 SSH)
- 其他信息可以直接回车跳过
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
验证用户存在:
id admin
第 2 步:给 admin sudo 权限
Ubuntu 标准做法:加入 sudo 组
usermod -aG sudo admin
验证:
groups admin
你应该看到输出里包含:
sudo
第 3 步:准备 SSH 密钥登录(⚠️关键步骤)
这一步没完成之前,绝对不要关当前 root SSH 会话
3.1 在你【本地电脑】生成 SSH 密钥(如果你已经有可跳过)
在你自己的电脑上执行(不是服务器):
ssh-keygen -t ed25519 -C "admin@JDCloud"
一路回车即可(是否设置 passphrase 看你习惯)。
生成后查看公钥:
cat ~/.ssh/id_ed25519.pub
复制这一整行(以 ssh-ed25519 开头)。
3.2 把公钥放到服务器的 admin 用户
在服务器上执行:
mkdir -p /home/skflip/.ssh
nano /home/skflip/.ssh/authorized_keys
把你刚才复制的 公钥粘进去,保存
Control+O
Enter
退出
Control+X
然后修正权限(非常重要):
chown -R skflip:skflip /home/skflip/.ssh
chmod 700 /home/skflip/.ssh
chmod 600 /home/skflip/.ssh/authorized_keys
3.3 测试 skflip 能否用密钥登录(‼️先测试)
新开一个终端窗口(不要断开当前 root 会话):
ssh skflip@你的服务器IP
输入passphrase后,直接登录成功
但是都有密钥了,还要密码,不优雅,mac怎么弄?有办法,放到钥匙串里:
第 1 步:确认你用的是哪种私钥
在 Mac 本地终端执行:
ls ~/.ssh
通常你会看到类似:
id_ed25519id_ed25519.pub
下面以 ed25519 为例。
第 2 步:把私钥加入 macOS Keychain(关键)
执行这一条(这是核心):
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
然后:
- 输入一次 passphrase
- macOS 会把它安全地存进 钥匙串(Keychain)
验证是否已加入:
ssh-add -l
如果你看到类似:
256 SHA256:xxxxxxx id_ed25519 (ED25519)
说明已经成功。
第 3 步:配置 SSH 自动使用 Keychain(强烈推荐)
编辑(或创建)你的 SSH 客户端配置文件:
nano ~/.ssh/config
加入下面这段(可以直接粘):
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_ed25519
保存退出。
👉 这一步的作用是:
- 每次 ssh 自动加载密钥
- 不再反复执行
ssh-add
第 4 步:测试(现在应该完全免输入)
直接测试:
ssh admin@你的服务器IP
✅ 不会再让你输入 passphrase
✅ 也不会要密码(你已经禁用了密码登录)
