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

3275 字
16 分钟
阿里云服务器访问与云服务授权教程

本文包含 Windows SSH 登录配置、日常访问、ECS 绑定现有 OSS 访问角色,以及 RDS PostgreSQL 白名单设置。

文中的服务器地址、角色名称、数据库地址、密钥名称和指纹均使用占位符或通用示例,未包含真实资源信息、个人账户路径、密钥内容或密码。操作时使用自己控制台中的实际值。

控制台入口核对日期:2026-10-21。

1. 准备工作#

需要准备:

  • 服务器公网 IP 和 SSH 端口。
  • 云平台控制台的远程终端访问权限。
  • 服务器登录账户及对应的管理权限。
  • Windows PowerShell 和 OpenSSH 客户端。
  • 管理 ECS 实例 RAM 角色及 RDS 白名单的控制台权限。

涉及云服务授权时,提前在自己的控制台中核对以下信息:

信息教程中的占位内容获取位置
地域服务器或数据库所在地域对应实例详情页
ECS 公网地址替换为服务器公网IPECS 实例详情页
ECS 私有地址替换为新服务器内网IPECS 实例网络信息
现有 RAM 角色替换为现有OSS访问角色名称RAM 角色列表或原服务器角色配置
RDS 连接地址替换为RDS内网连接地址RDS 实例数据库连接页面
白名单分组app_worker新建时填写的通用示例名称

地域应按实际实例选择。通过 RDS 内网地址连接时,需要确认 ECS 与 RDS 的 VPC 网络能够互通。

在电脑的 PowerShell 中检查 SSH 客户端:

Terminal window
ssh -V

本文以 root 账户、SSH 默认端口 22 为示例。使用其他账户时,公钥应保存在该账户自己的主目录中,并确保目录和文件归该账户所有。

云平台安全组需要允许你的电脑访问服务器的 SSH 端口。可以将来源限制为当前网络的公网 IP;网络地址变化后,需要更新相应规则。

2. 在电脑上生成密钥#

以下命令在电脑的 PowerShell 中执行。

检查示例密钥文件是否已经存在:

Terminal window
Test-Path "$env:USERPROFILE\.ssh\cloud_server_ed25519"
Test-Path "$env:USERPROFILE\.ssh\cloud_server_ed25519.pub"

如果已有密钥,请确认它是否为计划使用的密钥,保留原文件。需要新建另一把密钥时,使用不同文件名,并在后续命令中使用相同名称。

确认两个文件均不存在后,生成密钥:

Terminal window
ssh-keygen -t ed25519 -f "$env:USERPROFILE\.ssh\cloud_server_ed25519" -C "cloud-server-access"

按照提示设置密钥密码。输入密码时,终端不会显示字符,输入完成后按回车。

生成的文件分别是:

文件用途
cloud_server_ed25519私钥,保存在电脑上,不要上传或发送给别人
cloud_server_ed25519.pub公钥,添加到服务器以允许对应私钥登录

查看公钥:

Terminal window
Get-Content "$env:USERPROFILE\.ssh\cloud_server_ed25519.pub"

复制以 ssh-ed25519 开头的完整一行,包括密钥数据。不要复制 PowerShell 提示符或命令本身。

3. 将公钥添加到服务器#

通过云平台控制台打开服务器远程终端。以下命令均在服务器上执行。

查看当前账户:

Terminal window
whoami

本文使用 root 登录。如果当前账户具有 sudo 权限,执行:

Terminal window
sudo -i

如果提示没有权限,应通过云平台提供的管理入口使用有权限的账户操作。

确认当前账户为 root 后,逐条执行:

Terminal window
mkdir -p /root/.ssh
chmod 700 /root/.ssh
cat >> /root/.ssh/authorized_keys

最后一条命令执行后,终端会等待输入:

  1. 按一次回车,确保新增公钥从新的一行开始。
  2. 粘贴电脑生成的完整公钥。
  3. 按回车,再按 Ctrl+D 结束输入。

>> 会追加内容并保留已有公钥。不要改成 >,否则会覆盖文件内容。

设置权限并检查公钥:

Terminal window
chmod 600 /root/.ssh/authorized_keys
ssh-keygen -lf /root/.ssh/authorized_keys

在电脑的 PowerShell 中查看本机公钥指纹:

Terminal window
ssh-keygen -lf "$env:USERPROFILE\.ssh\cloud_server_ed25519.pub"

服务器输出应包含与本机完全一致的 SHA256: 指纹。公钥末尾的备注用于识别密钥,备注乱码通常不影响认证。

添加 authorized_keys 公钥后,无需重启 SSH 服务。

4. 从电脑连接服务器#

在电脑的 PowerShell 中,将占位内容替换为自己的服务器地址:

Terminal window
$serverAddress = "替换为服务器公网IP"
ssh -i "$env:USERPROFILE\.ssh\cloud_server_ed25519" "root@$serverAddress"

首次连接时,SSH 会提示确认服务器主机指纹。通过云平台控制台的服务器终端执行以下命令,查看 ED25519 主机指纹:

Terminal window
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

当客户端提示的主机密钥类型为 ED25519 时,比较两处指纹;一致后,在电脑终端输入 yes。其他类型应核对服务器上对应类型的主机公钥文件。

服务器主机指纹用于确认服务器身份,与前面用于登录的用户公钥指纹用途不同。

如果提示输入密钥密码,在电脑终端输入生成密钥时设置的密码。

成功登录后,可以执行以下只读命令:

Terminal window
whoami
hostname
nproc
free -h
df -h

这些命令依次查看登录账户、主机名称、可用处理器数量、内存和文件系统空间。

退出连接:

Terminal window
exit

如果服务器使用自定义 SSH 端口,在连接命令中添加 -p 和对应端口号。

5. 使用 ssh-agent 加载密钥#

直接执行 SSH 命令并输入密钥密码即可登录。需要让支持本机 OpenSSH Agent 的工具自动认证时,可以使用 ssh-agent。

在 Windows 开始菜单搜索 PowerShell,右键选择 以管理员身份运行,在新窗口中逐条执行:

Terminal window
Set-Service -Name ssh-agent -StartupType Manual
Start-Service ssh-agent

回到平时使用的 PowerShell 窗口,执行:

Terminal window
ssh-add "$env:USERPROFILE\.ssh\cloud_server_ed25519"

输入密钥密码。出现 Identity added 表示加载成功。

检查已加载的密钥:

Terminal window
ssh-add -l

电脑重启后,如果自动认证不可用,可以检查服务和密钥状态:

Terminal window
Get-Service ssh-agent
ssh-add -l

如果服务未运行,以管理员身份执行 Start-Service ssh-agent;如果目标密钥未加载,在平时使用的 PowerShell 中再次执行 ssh-add。

6. 日常访问#

打开电脑的 PowerShell,执行:

Terminal window
$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 角色;若已有其他角色,需要核对原有用途后再调整。

控制台操作#

  1. 登录阿里云控制台,进入 云服务器 ECS → 实例。
  2. 选择目标实例所在的地域和资源组。
  3. 根据自己的服务器公网 IP 找到实例,核对实例 ID 后进入详情页。
  4. 点击 全部操作 → 实例设置 → 授予/收回 RAM 角色。
  5. 操作类型选择 授予。
  6. 选择 替换为现有OSS访问角色名称 所指的现有角色,点击 确定。
  7. 刷新实例信息,核对当前绑定的 RAM 角色。

绑定角色无需重启服务器,也无需提供 AccessKey 或私钥。应用需要通过实例角色获取临时凭证,且角色权限必须覆盖目标 OSS 资源。角色绑定完成后,还应由迁移服务验证所需的 OSS 操作。

操作依据:阿里云 ECS 实例 RAM 角色说明。

8. 允许新服务器访问现有 RDS PostgreSQL#

添加内网 IP 白名单#

  1. 在阿里云控制台进入 云数据库 RDS,选择数据库所在地域。
  2. 打开目标 PostgreSQL 实例,在数据库连接页面核对内网连接地址。
  3. 同时核对新 ECS 的私有 IP 和两端 VPC;同一 VPC 内通常可直接使用私有地址连接。
  4. 左侧进入 白名单与安全组,点击 添加白名单分组。
  5. 分组名称可填写 app_worker,组内白名单填写新 ECS 的实际内网 IP。
  6. 如果页面显示 网络隔离模式,内网 VPC 连接选择 专有网络。
  7. 点击 确定,刷新页面,确认新增地址已保存,原有分组和地址仍然保留。

多个地址使用英文逗号分隔,逗号前后不加空格。白名单调整无需重启数据库。白名单允许网络访问后,数据库登录仍需有效账户及权限。

操作依据:阿里云 RDS PostgreSQL IP 白名单说明。

已采用安全组授权时#

  1. 在 ECS 详情页确认新服务器所属的安全组 ID。
  2. 在目标 RDS 实例进入 白名单与安全组 → 安全组。
  3. 点击 添加安全组,选择新服务器所属的目标安全组,点击 确定。
  4. 核对关联结果,并保留现有授权。

关联后,该 ECS 安全组中的实例都获得 RDS 网络访问许可,操作前应确认组内成员范围。安全组的网络类型需要与 RDS 一致。IP 白名单与安全组授权可以同时存在。

操作依据:阿里云 RDS PostgreSQL 安全组说明。

检查数据库连通性#

从新服务器测试 RDS 内网连接地址和控制台显示的端口。PostgreSQL 默认端口为 5432,自定义端口按实际值填写。

如果服务器已安装 nc,可执行以下命令检查 TCP 连接:

Terminal window
nc -vz -w 5 "替换为RDS内网连接地址" 5432

TCP 连接成功后,还需使用迁移服务的数据库配置验证登录和只读查询。密码通过已有的私密配置提供,不写入教程或聊天。

如果连接超时,检查 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 执行:

Terminal window
stat -c '%U:%G %a %n' /root /root/.ssh /root/.ssh/authorized_keys

/root/.ssh 和 authorized_keys 应归 root 所有,权限分别为 700 和 600。主目录不应允许其他账户写入。

查看 SSH 配置#

Terminal window
/usr/sbin/sshd -T | grep -E '^(permitrootlogin|pubkeyauthentication|authorizedkeysfile) '

permitrootlogin yes 或 permitrootlogin prohibit-password 可以允许 root 公钥登录;pubkeyauthentication yes 表示启用公钥认证。存在 Match 条件规则时,还需核对该连接实际适用的配置。

查看服务器连接日志#

对于使用 systemd 的服务器:

Terminal window
journalctl -u ssh -u sshd --since '5 minutes ago' --no-pager

查看电脑端连接过程#

在电脑的 PowerShell 中执行:

Terminal window
$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 调试日志可能包含地址、账户名称、文件路径和指纹,分享前检查全文。
  • 控制台截图和云服务日志同样需要隐藏上述信息,完成授权后只反馈操作结果即可。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

阿里云服务器访问与云服务授权教程
https://www.yolof.top/posts/server-access-cloud-authorization/
作者
小方
发布于
2026-10-23
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
译格 PDF Studio:从零做一个保版式的本地 PDF 翻译工作台
AI 应用开发开源项目复盘:本地 Web 版 PDF 翻译工作台,左右双栏对照预览、BabelDOC 版式重建、结构化翻译知识库与 TBX/TMX 专业格式互通、MCP 术语检索和 Claude Skill 流水线封装。
2
MotionLCM 文生动作训练实战:从三阶段复现到战斗动作 LoRA 微调
AI 应用开发在 Blackwell GPU 上从零跑通 MotionLCM 的完整记录:VAE→MLD→MotionLCM 三阶段训练(VAE FID 0.06),HumanML3D 数据工程,以及 1962 条战斗动作样本的 LoRA 微调。
3
游戏引擎代码语料全景调研:公开数据集、代码转语料工具链与多模态空白
AI 应用开发系统梳理 Godot、Unity、Unreal、RPG Maker 的公开代码语料,盘点代码转语料与合成数据工具链,并指出游戏引擎多模态训练语料的空白点。
4
AI 驱动的智能故事创作平台:长篇一致性、角色记忆与可视化叙事
AI 应用开发项目展示:从 0 到 1 搭建的 AI 故事创作工作台——长篇生成链路与状态回写、分层角色记忆、24 小时日程驱动的 NPC、故事地图与人物立绘的自动化生产管线。
5
用本地小模型搭一个多智能体播客工作室
AI 应用开发开源项目复盘:基于 Ollama + Qwen 本地小模型的多智能体播客生产流水线——研究、撰稿、人工审核、VibeVoice 多说话人语音合成,零 API 成本跑通从选题到音频的全流程。
随机文章随机推荐

评论区

Profile Image of the Author
小方
记录技术、创作与生活里的蓝调时刻
欢迎
欢迎来到 Fang's Blue Hour。这里收藏技术探索、创作实践、生活片段,以及值得慢慢回看的东西。
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
17
分类
6
标签
55
总字数
26,270
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.5
文章许可
CC BY-NC-SA 4.0

文章目录