在阿里云 Linux 服务器上配置 Ubuntu 远程 SSH 登录,实际上需要先确认:阿里云 ECS 实例本身运行的是 Ubuntu 系统(而非“在 Linux 上装 Ubuntu”),因为阿里云 ECS 创建时已选择操作系统镜像。若你的实例已是 Ubuntu,只需完成 SSH 服务配置与安全组规则;若误用了其他系统(如 CentOS),则需先重装为 Ubuntu 镜像。
以下是标准操作流程(假设实例已是 Ubuntu):
✅ 前提条件
- 实例已创建并处于 运行中 状态
- 已绑定 公网 IP 或弹性公网 IP(EIP)
- 拥有阿里云账号及对应实例的权限
🔧 步骤一:安装并启动 OpenSSH 服务器
# 更新软件包列表
sudo apt update
# 安装 openssh-server(Ubuntu 默认可能未预装)
sudo apt install -y openssh-server
# 检查服务状态
sudo systemctl status ssh
# 若未运行,启动并设置开机自启
sudo systemctl enable --now ssh
💡 提示:Ubuntu 20.04+ 使用
ssh服务名;旧版本可能是sshd。
🛡️ 步骤二:配置防火墙(UFW)
# 允许 SSH 端口(默认 22)
sudo ufw allow ssh # 或 sudo ufw allow 22/tcp
# 启用防火墙(若未启用)
sudo ufw enable
⚠️ 注意:若之前禁用过 UFW,请确保规则生效后再重启实例测试连接。
🔐 步骤三:配置安全组规则(阿里云控制台)
这是最关键的一步,常被忽略导致无法连接!
- 登录 阿里云控制台
- 进入 云服务器 ECS → 实例列表
- 找到目标实例 → 点击 更多 → 网络和安全组 → 安全组配置
- 编辑该实例绑定的安全组规则:
- 添加 入方向规则:
- 协议类型:
TCP - 端口范围:
22/22(或自定义端口如2222/2222) - 授权对象:
0.0.0.0/0(临时测试用)⚠️ 生产环境建议限制为具体 IP - 优先级:
1
- 协议类型:
- 添加 入方向规则:
- 保存规则(生效通常 <10 秒)
✅ 推荐实践:将
0.0.0.0/0替换为你的本地公网 IP(如123.45.67.89/32),提升安全性。
🌐 步骤四:从本地连接测试
方法 A:使用默认端口(22)
ssh username@<实例公网IP>
# 例如:ssh ubuntu@47.100.200.150
方法 B:修改 SSH 端口(增强安全)
- 编辑配置文件:
sudo nano /etc/ssh/sshd_config - 取消注释并修改:
Port 2222 PermitRootLogin no PasswordAuthentication yes # 或设为 no + 密钥认证 - 重启服务:
sudo systemctl restart ssh - 同步修改安全组规则(开放
2222端口) - 连接命令:
ssh -p 2222 username@<公网IP>
🔒 最佳安全实践(强烈建议)
| 措施 | 操作 |
|---|---|
| ✅ 禁用 root 直接登录 | PermitRootLogin no |
| ✅ 改用 SSH 密钥认证 | 生成密钥对,部署公钥到 ~/.ssh/authorized_keys |
| ✅ 限制登录用户 | AllowUsers your_username |
| ✅ 更换默认端口 | 避免自动化扫描攻击 |
| ✅ 安装 fail2ban | 自动封禁暴力破解 IP |
示例密钥认证流程:
# 本地生成密钥(Mac/Linux)
ssh-keygen -t ed25519 -C "your_email@example.com"
# 复制公钥内容
cat ~/.ssh/id_ed25519.pub
# 在服务器上追加到 authorized_keys
echo "公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chown -R $USER:$USER ~/.ssh
❓ 常见问题排查
| 问题 | 解决方案 |
|---|---|
Connection refused |
检查 sshd 是否运行、安全组是否放行、防火墙是否拦截 |
Permission denied (publickey,password) |
确认用户名正确、密码/密钥有效、PasswordAuthentication 设置 |
| 超时无响应 | 检查安全组规则、网络 ACL、实例是否欠费停机 |
| 无法获取公网 IP | 检查是否分配了 EIP,或是否仅内网访问 |
需要我为你生成一份完整的自动化部署脚本(含安全加固),或提供基于 Terraform/ROS 的安全组配置模板吗?
CLOUD技术博