阿里云服务器访问与云服务授权教程

本文包含 Windows SSH 登录配置、日常访问、ECS 绑定现有 OSS 访问角色,以及 RDS PostgreSQL 白名单设置。
文中的服务器地址、角色名称、数据库地址、密钥名称和指纹均使用占位符或通用示例,未包含真实资源信息、个人账户路径、密钥内容或密码。操作时使用自己控制台中的实际值。
控制台入口核对日期:2026-10-21。
1. 准备工作
需要准备:
- 服务器公网 IP 和 SSH 端口。
- 云平台控制台的远程终端访问权限。
- 服务器登录账户及对应的管理权限。
- Windows PowerShell 和 OpenSSH 客户端。
- 管理 ECS 实例 RAM 角色及 RDS 白名单的控制台权限。
涉及云服务授权时,提前在自己的控制台中核对以下信息:
| 信息 | 教程中的占位内容 | 获取位置 |
|---|---|---|
| 地域 | 服务器或数据库所在地域 | 对应实例详情页 |
| ECS 公网地址 | 替换为服务器公网IP | ECS 实例详情页 |
| ECS 私有地址 | 替换为新服务器内网IP | ECS 实例网络信息 |
| 现有 RAM 角色 | 替换为现有OSS访问角色名称 | RAM 角色列表或原服务器角色配置 |
| RDS 连接地址 | 替换为RDS内网连接地址 | RDS 实例数据库连接页面 |
| 白名单分组 | app_worker | 新建时填写的通用示例名称 |
地域应按实际实例选择。通过 RDS 内网地址连接时,需要确认 ECS 与 RDS 的 VPC 网络能够互通。
在电脑的 PowerShell 中检查 SSH 客户端:
ssh -V本文以 root 账户、SSH 默认端口 22 为示例。使用其他账户时,公钥应保存在该账户自己的主目录中,并确保目录和文件归该账户所有。
云平台安全组需要允许你的电脑访问服务器的 SSH 端口。可以将来源限制为当前网络的公网 IP;网络地址变化后,需要更新相应规则。
2. 在电脑上生成密钥
以下命令在电脑的 PowerShell 中执行。
检查示例密钥文件是否已经存在:
Test-Path "$env:USERPROFILE\.ssh\cloud_server_ed25519"Test-Path "$env:USERPROFILE\.ssh\cloud_server_ed25519.pub"如果已有密钥,请确认它是否为计划使用的密钥,保留原文件。需要新建另一把密钥时,使用不同文件名,并在后续命令中使用相同名称。
确认两个文件均不存在后,生成密钥:
ssh-keygen -t ed25519 -f "$env:USERPROFILE\.ssh\cloud_server_ed25519" -C "cloud-server-access"按照提示设置密钥密码。输入密码时,终端不会显示字符,输入完成后按回车。
生成的文件分别是:
| 文件 | 用途 |
|---|---|
cloud_server_ed25519 | 私钥,保存在电脑上,不要上传或发送给别人 |
cloud_server_ed25519.pub | 公钥,添加到服务器以允许对应私钥登录 |
查看公钥:
Get-Content "$env:USERPROFILE\.ssh\cloud_server_ed25519.pub"复制以 ssh-ed25519 开头的完整一行,包括密钥数据。不要复制 PowerShell 提示符或命令本身。
3. 将公钥添加到服务器
通过云平台控制台打开服务器远程终端。以下命令均在服务器上执行。
查看当前账户:
whoami本文使用 root 登录。如果当前账户具有 sudo 权限,执行:
sudo -i如果提示没有权限,应通过云平台提供的管理入口使用有权限的账户操作。
确认当前账户为 root 后,逐条执行:
mkdir -p /root/.sshchmod 700 /root/.sshcat >> /root/.ssh/authorized_keys最后一条命令执行后,终端会等待输入:
- 按一次回车,确保新增公钥从新的一行开始。
- 粘贴电脑生成的完整公钥。
- 按回车,再按
Ctrl+D结束输入。
>> 会追加内容并保留已有公钥。不要改成 >,否则会覆盖文件内容。
设置权限并检查公钥:
chmod 600 /root/.ssh/authorized_keysssh-keygen -lf /root/.ssh/authorized_keys在电脑的 PowerShell 中查看本机公钥指纹:
ssh-keygen -lf "$env:USERPROFILE\.ssh\cloud_server_ed25519.pub"服务器输出应包含与本机完全一致的 SHA256: 指纹。公钥末尾的备注用于识别密钥,备注乱码通常不影响认证。
添加 authorized_keys 公钥后,无需重启 SSH 服务。
4. 从电脑连接服务器
在电脑的 PowerShell 中,将占位内容替换为自己的服务器地址:
$serverAddress = "替换为服务器公网IP"ssh -i "$env:USERPROFILE\.ssh\cloud_server_ed25519" "root@$serverAddress"首次连接时,SSH 会提示确认服务器主机指纹。通过云平台控制台的服务器终端执行以下命令,查看 ED25519 主机指纹:
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub当客户端提示的主机密钥类型为 ED25519 时,比较两处指纹;一致后,在电脑终端输入 yes。其他类型应核对服务器上对应类型的主机公钥文件。
服务器主机指纹用于确认服务器身份,与前面用于登录的用户公钥指纹用途不同。
如果提示输入密钥密码,在电脑终端输入生成密钥时设置的密码。
成功登录后,可以执行以下只读命令:
whoamihostnamenprocfree -hdf -h这些命令依次查看登录账户、主机名称、可用处理器数量、内存和文件系统空间。
退出连接:
exit如果服务器使用自定义 SSH 端口,在连接命令中添加 -p 和对应端口号。
5. 使用 ssh-agent 加载密钥
直接执行 SSH 命令并输入密钥密码即可登录。需要让支持本机 OpenSSH Agent 的工具自动认证时,可以使用 ssh-agent。
在 Windows 开始菜单搜索 PowerShell,右键选择 以管理员身份运行,在新窗口中逐条执行:
Set-Service -Name ssh-agent -StartupType ManualStart-Service ssh-agent回到平时使用的 PowerShell 窗口,执行:
ssh-add "$env:USERPROFILE\.ssh\cloud_server_ed25519"输入密钥密码。出现 Identity added 表示加载成功。
检查已加载的密钥:
ssh-add -l电脑重启后,如果自动认证不可用,可以检查服务和密钥状态:
Get-Service ssh-agentssh-add -l如果服务未运行,以管理员身份执行 Start-Service ssh-agent;如果目标密钥未加载,在平时使用的 PowerShell 中再次执行 ssh-add。
6. 日常访问
打开电脑的 PowerShell,执行:
$serverAddress = "替换为服务器公网IP"ssh -i "$env:USERPROFILE\.ssh\cloud_server_ed25519" "root@$serverAddress"根据提示输入密钥密码,完成操作后执行 exit。
SSH 提供服务器终端访问。浏览器访问网站还需要服务器已经部署网站服务,并配置对应端口、域名和访问规则。
7. 为 ECS 绑定现有 OSS 访问角色
操作前核对
确认目标 RAM 角色信任 ECS,并已获得业务所需的 OSS 权限。操作账户需要授予实例角色及传递角色的权限,例如 ecs:AttachInstanceRamRole 和 ram:PassRole。
一台 ECS 同时只能绑定一个实例 RAM 角色;若已有其他角色,需要核对原有用途后再调整。
控制台操作
- 登录阿里云控制台,进入 云服务器 ECS → 实例。
- 选择目标实例所在的地域和资源组。
- 根据自己的服务器公网 IP 找到实例,核对实例 ID 后进入详情页。
- 点击 全部操作 → 实例设置 → 授予/收回 RAM 角色。
- 操作类型选择 授予。
- 选择
替换为现有OSS访问角色名称所指的现有角色,点击 确定。 - 刷新实例信息,核对当前绑定的 RAM 角色。
绑定角色无需重启服务器,也无需提供 AccessKey 或私钥。应用需要通过实例角色获取临时凭证,且角色权限必须覆盖目标 OSS 资源。角色绑定完成后,还应由迁移服务验证所需的 OSS 操作。
操作依据:阿里云 ECS 实例 RAM 角色说明。
8. 允许新服务器访问现有 RDS PostgreSQL
添加内网 IP 白名单
- 在阿里云控制台进入 云数据库 RDS,选择数据库所在地域。
- 打开目标 PostgreSQL 实例,在数据库连接页面核对内网连接地址。
- 同时核对新 ECS 的私有 IP 和两端 VPC;同一 VPC 内通常可直接使用私有地址连接。
- 左侧进入 白名单与安全组,点击 添加白名单分组。
- 分组名称可填写
app_worker,组内白名单填写新 ECS 的实际内网 IP。 - 如果页面显示 网络隔离模式,内网 VPC 连接选择 专有网络。
- 点击 确定,刷新页面,确认新增地址已保存,原有分组和地址仍然保留。
多个地址使用英文逗号分隔,逗号前后不加空格。白名单调整无需重启数据库。白名单允许网络访问后,数据库登录仍需有效账户及权限。
已采用安全组授权时
- 在 ECS 详情页确认新服务器所属的安全组 ID。
- 在目标 RDS 实例进入 白名单与安全组 → 安全组。
- 点击 添加安全组,选择新服务器所属的目标安全组,点击 确定。
- 核对关联结果,并保留现有授权。
关联后,该 ECS 安全组中的实例都获得 RDS 网络访问许可,操作前应确认组内成员范围。安全组的网络类型需要与 RDS 一致。IP 白名单与安全组授权可以同时存在。
操作依据:阿里云 RDS PostgreSQL 安全组说明。
检查数据库连通性
从新服务器测试 RDS 内网连接地址和控制台显示的端口。PostgreSQL 默认端口为 5432,自定义端口按实际值填写。
如果服务器已安装 nc,可执行以下命令检查 TCP 连接:
nc -vz -w 5 "替换为RDS内网连接地址" 5432TCP 连接成功后,还需使用迁移服务的数据库配置验证登录和只读查询。密码通过已有的私密配置提供,不写入教程或聊天。
如果连接超时,检查 RDS 内网地址、端口、白名单、VPC 路由,以及 ECS 出方向规则和服务器防火墙是否允许访问数据库端口。
9. 常见问题
| 现象 | 检查方法 |
|---|---|
操作 /root/.ssh 时提示 Permission denied | 执行 whoami 确认账户,使用具备权限的账户操作 |
Set-Service 提示拒绝访问 | 以管理员身份打开电脑上的 PowerShell |
Error connecting to agent | 检查电脑上的 ssh-agent 服务是否运行 |
Permission denied (publickey) | 核对登录账户、公钥指纹、服务器文件权限,以及本机私钥是否可以解锁 |
| 连接超时 | 核对公网 IP、SSH 端口、安全组、服务器防火墙和网络连接 |
| 公钥备注乱码 | 比较 SHA256: 指纹确认是否为同一把密钥 |
| 主机指纹变化警告 | 通过云平台控制台核实服务器身份及是否重新安装系统,确认原因后再处理本机记录 |
| ECS 角色列表中找不到目标角色 | 核对阿里云账户、RAM 角色的 ECS 信任关系及当前操作者权限 |
| 已绑定角色但 OSS 访问失败 | 检查应用凭证来源、角色权限、Bucket 授权和访问地址 |
| RDS 白名单保存后仍然超时 | 检查新服务器实际私有 IP、网络路由及出方向访问规则 |
| RDS 提示账户认证失败 | 检查数据库用户名、密码及数据库权限 |
检查服务器权限
通过云平台控制台进入服务器,以 root 执行:
stat -c '%U:%G %a %n' /root /root/.ssh /root/.ssh/authorized_keys/root/.ssh 和 authorized_keys 应归 root 所有,权限分别为 700 和 600。主目录不应允许其他账户写入。
查看 SSH 配置
/usr/sbin/sshd -T | grep -E '^(permitrootlogin|pubkeyauthentication|authorizedkeysfile) 'permitrootlogin yes 或 permitrootlogin prohibit-password 可以允许 root 公钥登录;pubkeyauthentication yes 表示启用公钥认证。存在 Match 条件规则时,还需核对该连接实际适用的配置。
查看服务器连接日志
对于使用 systemd 的服务器:
journalctl -u ssh -u sshd --since '5 minutes ago' --no-pager查看电脑端连接过程
在电脑的 PowerShell 中执行:
$serverAddress = "替换为服务器公网IP"ssh -v -i "$env:USERPROFILE\.ssh\cloud_server_ed25519" "root@$serverAddress"Server accepts key 表示服务器接受了该公钥,完整登录还需要本机私钥完成签名。
10. 分享教程和日志前隐藏信息
- 将真实公网 IP、内网 IP、域名、实例名称和个人账户名称替换为占位符。
- 隐藏实际 RAM 角色名称、RDS 连接地址、Bucket 名称、VPC ID 和安全组 ID。
- 将包含个人用户名的路径改为
$env:USERPROFILE或通用路径。 - 隐藏实际公钥内容、密钥指纹和服务器主机指纹,避免关联到具体设备。
- 不分享私钥文件、密钥密码、服务器密码、访问令牌或云平台凭据。
- SSH 调试日志可能包含地址、账户名称、文件路径和指纹,分享前检查全文。
- 控制台截图和云服务日志同样需要隐藏上述信息,完成授权后只反馈操作结果即可。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!

