像专家一样使用 SSH:在 EC2 实例上创建隔离用户(不破坏任何东西)
Source: Dev.to
如果你曾在同一台服务器上部署过多个项目,你可能会感受到这样的紧张感:
“我不想让这个新东西干扰已经在运行的东西。”
这正是我当时的处境:
- 一个已有的 EC2 实例
- 一个运行大型项目的主用户
- 一个我想要干净、安全地部署的较小服务
解决方案不是 Docker 或 Kubernetes,而是更简单的——Linux 用户 + SSH 密钥,正确地使用它们。
目标
- 创建一个新的 Linux 用户(
cc) - 在该用户下隔离新项目
- 使用 SSH 直接以
cc登录 - 保持一切安全且专业——不使用 hack,也不走捷径
1. 以已有用户 SSH 登录服务器
ssh your-current-user@your-ec2-ip
2. 创建新用户
sudo adduser cc # 系统会提示你输入密码和可选信息
sudo usermod -aG sudo cc # (可选但推荐)授予 sudo 权限
此时用户 cc 已经存在,但还不能通过 SSH 登录。
3. 了解 SSH 认证的工作原理
- SSH 证明你拥有 私钥。
- 服务器检查目标用户的
~/.ssh/authorized_keys中是否列有对应的 公钥。 - 如果公钥未列出,登录会被拒绝。
像 cc 这样的全新用户的允许列表是空的。
使用详细模式测试现有的 SSH 连接,看看正在提供哪个密钥:
ssh -v your-current-user@your-ec2-ip
你会看到类似下面的行:
Offering public key: ~/.ssh/backend-key
这表明你的笔记本正在使用哪个私钥。对应的公钥是 ~/.ssh/backend-key.pub。这就是你为新用户应该使用的唯一密钥。
4. 为 cc 设置 SSH 目录和 authorized_keys
# 在服务器上
sudo mkdir -p /home/cc/.ssh
sudo chmod 700 /home/cc/.ssh
sudo chown cc:cc /home/cc/.ssh
# 创建 authorized_keys 文件
sudo nano /home/cc/.ssh/authorized_keys
将本地 backend-key.pub 文件的全部内容粘贴到 authorized_keys 中,然后修正权限:
sudo chown cc:cc /home/cc/.ssh/authorized_keys
sudo chmod 600 /home/cc/.ssh/authorized_keys
5. 测试新登录
在本地机器上运行:
ssh cc@your-ec2-ip
如果一切设置正确,你就会看到 🎉。验证一下:
whoami # 应输出: cc
pwd # 应输出: /home/cc
6. (可选)在 ~/.ssh/config 中添加快捷方式
Host cc-ec2
HostName your-ec2-ip
User cc
IdentityFile ~/.ssh/backend-key
以后只需运行:
ssh cc-ec2
这种做法的好处
- 项目之间完全隔离——独立的环境和依赖
- 故障影响范围更小
- 可扩展的设置,随需求增长
- 专业安全——SSH 密钥抗暴力破解和钓鱼,是云环境的行业标准
- 能够 完全禁用密码登录,仅在需要时保留 sudo 密码
你不仅仅是“让 SSH 工作”。你已经像专业人士一样配置了服务器:在用户层面管理身份和信任。一旦这种思维模型形成,SSH 就不再神秘,而是多服务服务器上可靠的工具。
祝你玩得开心 🚀