要在Windows系统上通过SSH访问远程AWS主机(EC2实例),需遵循安全组配置 、客户端选择 、连接操作三个核心步骤,并注意常见问题的排查。以下是详细指南:
一、前提条件
在开始前,请确保已完成以下准备:
- AWS EC2实例已启动:实例状态需为"运行中"(可通过AWS管理控制台查看)。
- 获取实例信息 :
- 实例的公有DNS名称 或IPv4地址(在EC2控制台的"实例"页面获取);
- 实例的默认用户名 (取决于AMI类型,如Amazon Linux为
ec2-user,Ubuntu为ubuntu,RHEL为ec2-user或root); - 启动实例时创建的私钥文件(.pem)(需妥善保存,丢失无法找回)。
- 安全组配置 :确保实例关联的安全组允许**SSH(端口22)**入站流量(详见下文"步骤1")。
二、步骤1:配置AWS安全组(关键!避免"Connection refused")
安全组是AWS的虚拟防火墙,**必须开放SSH端口(22)**才能允许外部连接。配置步骤如下:
- 登录AWS管理控制台,进入"EC2服务"→"实例",选择目标实例。
- 在"描述"选项卡中,找到"安全组" section,点击安全组ID(如
sg-0123456789abcdef0)。 - 在"入站规则"选项卡中,点击"编辑入站规则",添加以下规则:
- 类型:选择"SSH";
- 协议:TCP;
- 端口范围:22;
- 来源 :建议选择"我的IP"(自动获取当前公网IP),或输入特定IP段(如
192.168.1.0/24); - 点击"保存规则"。
注意 :若来源设置为0.0.0.0/0,则允许所有IP访问SSH端口(不安全,仅测试用)。
三、步骤2:选择Windows SSH客户端
Windows系统有两种主流SSH客户端可选,根据习惯选择其一即可:
选项A:使用Windows自带OpenSSH客户端(推荐,无需额外安装)
Windows 10及以上系统默认预装OpenSSH客户端 (若未安装,可通过"设置→应用→可选功能→添加功能"安装)。
连接步骤:
-
打开命令提示符(管理员权限) :按
Win+R输入cmd,按Ctrl+Shift+Enter(避免权限不足)。 -
导航至私钥文件目录 :使用
cd命令进入.pem文件所在的文件夹(如cd D:\Software)。 -
设置私钥文件权限 :SSH要求私钥文件仅所有者可读 ,执行以下命令:
bashicacls "youarethebest.pem" /grant:r "$($env:USERNAME):(R)" /inheritance:r(注:若使用PowerShell,可直接输入上述命令;若使用命令提示符,需用
chmod 400 youarethebest.pem,但Windows对.pem权限的支持不如Linux完善,建议用PowerShell)。 -
执行SSH连接命令 :
bashssh -i "D:\Software\youarethebest.pem" ubuntu@34.203.241.96- 替换
D:\Software\youarethebest.pem为你的私钥文件路径; - 替换
ubuntu为实例的默认用户名(如ec2-user); - 替换
34.203.241.96为实例的公有IP或DNS名称。
- 替换
-
验证指纹(首次连接) :首次连接时,会提示"无法验证主机真实性",输入
yes并回车(需确保指纹与AWS控制台"实例→描述→SSH主机密钥指纹"一致)。
选项B:使用PuTTY(第三方工具,适合习惯图形界面的用户)
PuTTY是Windows下经典的SSH客户端,需配合PuTTYgen (密钥转换工具)使用。
准备工作:
- 下载并安装PuTTY:https://www.putty.org/(选择"64-bit x86 MSI installer")。
- 使用PuTTYgen 转换私钥格式:
- 启动PuTTYgen,点击"Load",选择你的
.pem文件(需选择"所有文件"才能看到.pem); - 点击"Save private key",保存为
.ppk格式(如youarethebest.ppk,无需设置密码)。
- 启动PuTTYgen,点击"Load",选择你的
连接步骤:
- 启动PuTTY,在"Session"选项卡中输入:
- Host Name :
ubuntu@34.203.241.96(替换为实例用户名和IP/DNS); - Port:22;
- Connection type:SSH。
- Host Name :
- 在左侧"Category"中选择"Connection→SSH→Auth",点击"Browse",选择转换后的
.ppk文件。 - (可选)在"Session"选项卡中,输入"Saved Sessions"名称(如"AWS-EC2"),点击"Save"(下次可直接加载)。
- 点击"Open",首次连接会提示"安全警告",点击"是"(需验证指纹)。
四、步骤3:验证连接
若连接成功,会看到实例的命令行提示符(如ubuntu@ip-172-31-xx-xx:~$),此时可执行命令(如ls、pwd)验证。
五、常见问题排查(针对"Connection refused")
若遇到"ssh: connect to host xxx port 22: Connection refused",请按以下顺序排查:
- 安全组是否开放SSH端口:回到步骤1,确认安全组的入站规则是否允许SSH(端口22)来自你的IP。
- 实例是否运行:在AWS控制台检查实例状态是否为"运行中"(若状态为"停止",需启动实例)。
- 私钥是否正确 :确认
.pem文件是否为启动实例时的密钥对(若更换过密钥,需重新关联)。 - 网络是否可达 :尝试
ping 34.203.241.96(注:AWS实例默认禁用ICMP,可能无法ping通,但SSH连接不受影响);或用tracert 34.203.241.96查看路由是否有阻塞。 - 客户端权限是否正确 :确保
.pem文件权限为"仅所有者可读"(Windows下用PowerShell执行icacls命令,Linux下用chmod 400)。
六、注意事项
- 合规性:在中国大陆,访问境外AWS实例需遵守当地法律法规,确保用途合法。
- 安全最佳实践 :
- 避免使用
0.0.0.0/0作为SSH来源(易被暴力破解); - 定期更换密钥对(通过AWS控制台的"密钥对"页面创建新密钥,替换实例中的公钥);
- 禁用密码登录(仅使用密钥认证,修改
/etc/ssh/sshd_config中的PasswordAuthentication no,重启sshd服务)。
- 避免使用
通过以上步骤,即可在Windows系统上通过SSH成功访问远程AWS主机。若仍有问题,建议参考AWS官方文档《连接到Linux实例》或联系AWS技术支持。