以下是使用密钥对登录 SSH 的完整步骤指南,包含本地设置与连接命令:
一、核心原理
- 公私钥配对
- 私钥:保存在你本地电脑(
.pem
或.ppk
格式) - 公钥:自动部署到服务器的
~/.ssh/authorized_keys
文件中 - 服务器验证本地私钥签名后允许登录
- 私钥:保存在你本地电脑(
二、登录步骤(全本地操作)
✅ Linux/Mac 用户
- 设置私钥权限
chmod 600 ~/.ssh/aliyun_key.pem # 关键步骤!权限不对会拒绝连接
仅需首次使用密钥时执行 - SSH登录命令
ssh -i ~/.ssh/aliyun_key.pem 用户名@服务器IP
- 用户名说明:
- CentOS/RedHat:
root
- Ubuntu/Debian:
ubuntu
(新建实例默认) - 自定义用户:替换为你的用户名
- CentOS/RedHat:
ssh -i ~/.ssh/aliyun_key.pem ubuntu@121.40.88.22
- 用户名说明:
✅ Windows 用户(PuTTY)
- 转换私钥格式
- 用 PuTTYgen 加载
.pem
→ 保存为.ppk
文件 - 下载 PuTTYgen
- 用 PuTTYgen 加载
- 配置 PuTTY
会话设置: Host/IP:服务器公网IP Port:22 Connection type:SSH SSH认证: Auth > Browse:选择转换后的.ppk文件
- 点击 “Open” 连接
三、高级使用技巧
1. 免输密钥路径(配置SSH config)
创建 ~/.ssh/config
文件(Linux/Mac):
Host aliyun-server
HostName 121.40.88.22 # 替换为实际IP
User ubuntu # 替换为实际用户
IdentityFile ~/.ssh/aliyun_key.pem
之后只需运行:
ssh aliyun-server
2. 解决首次登录确认提示
在命令添加 -o StrictHostKeyChecking=no
:
ssh -i ~/.ssh/key.pem user@ip -o StrictHostKeyChecking=no
3. 端口转发示例
ssh -i key.pem -L 8080:localhost:80 user@ip # 本地8080→服务器80端口
四、登录失败排查表
现象 | 解决方案 |
---|---|
Permission denied | 1. 检查私钥权限 chmod 600 2. 确认用户名正确 |
连接超时 | 1. 检查服务器安全组开放22端口 2. 确认实例运行中 |
No supported authentication methods | 1. 检查密钥是否绑定实例 2. 服务器查看 /etc/ssh/sshd_config 确认 PubkeyAuthentication yes |
密钥被拒绝 | 1. 通过VNC登录检查 ~/.ssh/authorized_keys 内容是否匹配本地公钥 |
提示:Linux 下可使用
-v
参数查看详细调试信息:ssh -v -i key.pem user@ip
五、安全须知
- 私钥即密码
- 泄露
.pem
文件等同于泄露服务器密码
- 泄露
- 定期轮换密钥
每3-6个月在阿里云控制台创建新密钥对并更换绑定 - 禁用密码登录(推荐)
在服务器执行:sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config sudo systemctl restart sshd
通过以上步骤,无需接触服务器终端即可安全登录,所有操作均在本地完成。