当本地设备为macOS或Windows 10/11,可直接使用系统内置的OpenSSH命令行工具连接Linux实例。此外,本地Windows设备也可以通过Xshell工具连接实例,两种方式均支持密码或密钥对认证。
推荐通过Workbench连接阿里云上的实例,该工具可直接通过浏览器使用、支持免密登录,相比使用OpenSSH、Xshell更便捷。
适用范围
方式一:使用OpenSSH客户端(命令行)
OpenSSH是macOS和新版Windows系统内置的标准SSH客户端,通过命令行即可快速连接。
准备工作
操作步骤
Windows 10/11
密码登录
打开PowerShell
按
Win
+R
输入powershell
后按Enter
键进入PowerShell命令行界面。发起远程连接
ssh <实例登录名>@<实例公网IP地址>
示例:
ssh root@47.98.xxx.xxx
(首次连接时)验证主机指纹
当首次连接一台新的ECS时,会显示类似下方的信息,提示验证主机密钥指纹。
这是SSH的一项安全机制,为确保安全,请获取实例的主机密钥指纹后比对差异。若不一致,则说明正在遭受中间人攻击,请切换到安全的网络环境下重新连接实例。
确认主机指纹无误后,输入
yes
并按回车。The authenticity of host '47.98.xxx.xxx (47.98.xxx.xxx)' can't be established. ED25519 key fingerprint is SHA256:AbCdEf123456... This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])?
输入密码,进入实例
输入密码时屏幕不会显示字符,这是正常现象,输入完成后按回车即可。
密码验证通过后,将看到类似下方的欢迎信息,并且命令提示符会变为
[<实例登录名>@<hostname> ~]$
的形式。表示已成功登录到ECS实例。Welcome to Alibaba Cloud Elastic Compute Service ! [root@Connect-Instance-Example ~]#
密钥对登录
打开PowerShell
按
Win
+R
输入powershell
后按Enter
键进入PowerShell命令行界面。发起远程连接
ssh -i /path/to/private_key.pem <实例登录名>@<实例公网IP地址>
示例:
ssh -i /path/to/private_key.pem root@47.98.xxx.xxx
。其中/path/to/private_key.pem
为私钥文件路径,例如C:\Users\Administrator\Downloads\private_key.pem
。(首次连接时)验证主机指纹
当首次连接一台新的ECS时,会显示类似下方的信息,提示验证主机密钥指纹。
这是SSH的一项安全机制,为确保安全,请获取实例的主机密钥指纹后比对差异。若不一致,则说明正在遭受中间人攻击,请切换到安全的网络环境下重新连接实例。
确认主机指纹无误后,输入
yes
并按回车。The authenticity of host '47.98.xxx.xxx (47.98.xxx.xxx)' can't be established. ED25519 key fingerprint is SHA256:AbCdEf123456... This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])?
验证密钥,进入实例
当密钥验证通过后,将看到类似下方的欢迎信息,并且命令提示符会变为
[<实例登录名>@<hostname> ~]$
的形式。表示已成功登录到ECS实例。Welcome to Alibaba Cloud Elastic Compute Service ! [root@Connect-Instance-Example ~]#
macOS
密码登录
打开终端(Terminal)。
发起远程连接。
ssh <实例登录名>@<实例公网IP地址>
示例:
ssh root@47.98.xxx.xxx
(首次连接时)验证主机指纹
当首次连接一台新的ECS时,会显示类似下方的信息,提示验证主机密钥指纹。
这是SSH的一项安全机制,为确保安全,请获取实例的主机密钥指纹后比对差异。若不一致,则说明正在遭受中间人攻击,请切换到安全的网络环境下重新连接实例。
确认主机指纹无误后,输入
yes
并按回车。The authenticity of host '47.98.xxx.xxx (47.98.xxx.xxx)' can't be established. ED25519 key fingerprint is SHA256:AbCdEf123456... This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])?
输入密码,进入实例
输入密码时屏幕不会显示字符,这是正常现象,输入完成后按回车即可。
密码验证通过后,将看到系统的登录欢迎信息(具体内容因操作系统镜像而异),并且命令提示符会变为
[<实例登录名>@<hostname> ~]$
的形式。表示已成功登录到ECS实例。Welcome to Alibaba Cloud Elastic Compute Service ! [root@Connect-Instance-Example ~]#
密钥对登录
打开终端(Terminal)。
发起远程连接
# chmod 400: 为私钥文件设置仅所有者可读的权限,这是SSH客户端的安全要求 chmod 400 /path/to/private_key.pem ssh -i /path/to/private_key.pem <实例登录名>@<实例公网IP地址>
示例:
ssh -i /path/to/private_key.pem root@47.98.xxx.xxx
。其中/path/to/private_key.pem
为私钥文件路径。(首次连接时)验证主机指纹
当首次连接一台新的ECS时,会显示类似下方的信息,提示验证主机密钥指纹。
这是SSH的一项安全机制,为确保安全,请获取实例的主机密钥指纹后比对差异。若不一致,则说明正在遭受中间人攻击,请切换到安全的网络环境下重新连接实例。
确认主机指纹无误后,输入
yes
并按回车。The authenticity of host '47.98.xxx.xxx (47.98.xxx.xxx)' can't be established. ED25519 key fingerprint is SHA256:AbCdEf123456... This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])?
验证密钥,进入实例
当密钥验证通过后,将看到类似下方的欢迎信息,并且命令提示符会变为
[<username>@<hostname> ~]$
的形式。表示已成功登录到ECS实例。Welcome to Alibaba Cloud Elastic Compute Service ! [root@Connect-Instance-Example ~]#
方式二:使用Xshell客户端(仅适用于Windows)
Xshell是一款SSH客户端工具,用于在Windows系统远程登录和管理Linux服务器。
准备工作
下载并安装Xshell:访问 Xshell 官方网站下载并安装最新客户端。
实例公网IP地址:在ECS控制台-实例,找到目标实例进入详情,在配置信息区域找到公网IP。
配置安全组:为实例关联的安全组配置入方向规则,允许本地IP通过SSH(22端口)访问实例。
操作步骤
启动 Xshell 并新建会话
打开 Xshell 应用程序。
在弹出的会话窗口中,单击新建(或通过菜单栏
)。
配置连接基本信息
单击左侧导航栏下的连接,完成配置:
名称:为会话取一个易于识别的名称(例如:My-Web-Server)。
协议:保持默认的SSH。
主机:输入实例的公网 IP。
端口号:保持默认的22。
配置用户身份验证
在左侧导航栏中,单击用户身份验证。
密码登录
方法:选择Password。
用户名:输入服务器的登录名(如root)。
密码:输入对应的登录密码。
密钥对登录
用户名:输入服务器的登录名(如root)。
方法:选择Public Key,并按以下步骤配置用户密钥:
单击设置...。
在弹出的窗口中,选择密钥文件选项,单击用户密钥配置项后的...,单击导入...,选择本地存储的
.pem
后缀私钥文件。导入成功后,选中该密钥,单击确定。
(可选)如密钥文件设置了密码,则需要提供密码。
连接到服务器
完成上述配置后,单击连接。
(首次连接时)验证主机密钥
当首次连接一台新的ECS时,Xshell会弹出SSH安全警告窗口,显示主机密钥指纹。
这是SSH的一项安全机制,为确保安全,请获取实例的主机密钥指纹后比对差异。若不一致,则说明正在遭受中间人攻击,请切换到安全的网络环境下重新连接实例。
确认无误后,单击接受并保存,这样以后连接就不会再弹出此提示。
连接到服务器
当看到命令提示符出现以下内容时,表示已经通过验证,成功连接。
Welcome to Alibaba Cloud Elastic Compute Service ! [root@Connect-Instance-Example ~]#
应用于生产环境
在实际生产环境中,建议通过以下操作提升远程连接安全。
主动验证主机指纹,防范中间人攻击
在第一次连接到实例时,应先验证实例的主机密钥指纹,确认连接的是目标实例而非攻击者的服务器。
禁用密码登录,强制使用密钥对
密钥对认证远比密码认证安全,可降低暴力破解风险。操作如下:
为实例绑定密钥对。
禁用密码登录:登录实例,编辑
/etc/ssh/sshd_config
配置文件,找到PasswordAuthentication
,修改为PasswordAuthentication no
,重启SSH服务生效配置。
修改默认SSH端口
将默认22端口改为其他数值较大的非标准端口(如2222),可有效减少被恶意扫描。
放行新端口: 在实例所属的安全组中添加入方向规则,放行新的端口(如2222)
修改SSH服务端口:登录实例,编辑
/etc/ssh/sshd_config
配置文件,将#Port 22
修改为Port 2222
。重启SSH服务生效配置。使用新端口连接: 此后使用ssh命令时,需通过
-p
指定ssh的服务端口,例如:ssh -p 2222 username@instance_ip
。
仅授权可信的IP访问实例
修改安全组规则安全组规则,仅允许本机IP或其他受信任的IP访问实例SSH服务,拦截未知主机访问实例。
常见问题
如何配置安全组规则以放行22端口?
在实例所在安全组添加如下安全组规则:
授权策略
协议
访问来源
访问目的(本实例)
允许
自定义 TCP
输入本地客户端的公网IP地址。
重要若使用
0.0.0.0/0
,表示允许任意 IP 访问远程服务端口,存在安全风险,请谨慎使用。SSH(22)
如果修改了实例的SSH服务的端口,需调整为实际端口。
如何验证实例的主机密钥指纹?
首次连接实例时,会提示验证主机密钥指纹,确认方法如下:
控制台
进入ECS控制台-实例,在左上角选择地域与资源组。
找到对应实例后,单击
,然后找到BEGIN SSH HOST KEY FINGERPRINTS
,会显示所有主机指纹。请仔细核对本地客户端提示的指纹(如上例中的 SHA256:******)是否与日志中显示的指纹完全一致。若不一致,则可能正在遭受中间人攻击,需切换至安全网络环境后重试连接。
若找不到
BEGIN SSH HOST KEY FINGERPRINTS
,需进入实例内查看主机指纹。
实例内
使用Workbench登录实例后执行以下命令,查看主机密钥指纹:
for f in /etc/ssh/ssh_host_*_key.pub; do ssh-keygen -l -f "$f"; done
输出示例:
1024 SHA256:9C******co root@Connect-Instance-Example (DSA) 256 SHA256:u6******SU root@Connect-Instance-Example (ECDSA) 256 SHA256:iQ******jg root@Connect-Instance-Example (ED25519) 3072 SHA256:8R******64 root@Connect-Instance-Example (RSA)
请仔细核对本地客户端提示的指纹(如上例中的 SHA256:******)是否与日志中显示的指纹完全一致。若不一致,则可能正在遭受中间人攻击,需切换至安全网络环境后重试连接。
如何通过SSH的config配置文件简化连接命令?
每次连接都输入完整的
ssh -i /path/to/key.pem username@instance_ip
命令较为繁琐。通过在本地创建和配置SSHconfig
文件,可以为服务器设置别名,简化连接命令。找到或创建config文件
Windows 10/11
config配置文件默认路径为
C:\Users\YourUsername\.ssh\config
。若不存在,需手动创建。使用时,请替换
YourUsername
为当前Windows的用户名。macOS
config
配置文件默认路径为~/.ssh/config
。若不存在,需手动创建。编辑config文件并添加实例信息
使用文本编辑器打开
config
文件,添加类似如下的配置。每一段Host
配置对应一个服务器实例。# 为Web服务器配置一个别名 "web-server" Host web-server HostName 47.98.xxx.xxx User root Port 22 (可选)如果使用密钥对登录,请指定私钥路径,使用密码登录请忽略 IdentityFile /path/to/your/private_key.pem # 可以为其他服务器添加更多配置 Host other-server HostName 8.123.xxx.xxx User ecs-user Port 2222 IdentityFile ~/.ssh/another_key.pem
参数说明:
Host:服务器的别名,可自定义。
HostName:实例的公网IP地址。
User:登录用户名。
Port:SSH端口号(默认为22)。
IdentityFile:私钥文件的绝对路径。
使用别名快速连接
保存
config
文件后,可以直接使用别名来连接实例。# 直接使用别名连接,SSH会自动读取config中的IP、用户名和密钥信息 ssh web-server
连接时出现
Connection timed out
或提示连接超时?表示客户端无法连接到服务器。排查顺序:
检查公网IP是否正确。
检查安全组是否放行端口。
检查实例是否处于运行状态。
使用ECS控制台-自助问题排查排查异常。
密码输入正确,但提示
Permission denied, please try again
表示服务器拒绝了密码。排查顺序:
在控制台重置密码后重试。
使用ECS控制台-自助问题排查排查异常。
使用密钥对登录时提示
Permission denied (publickey)
?表示服务器拒绝了密钥。排查顺序:
在控制台重新绑定密钥对后重试。
检查私钥文件路径及是否与实例匹配。
(macOS系统下)检查私钥文件权限是否为
400
或600
。使用ECS控制台-自助问题排查排查异常。
通过SSH命令登录实例时,提示
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
这是SSH的安全机制:在第一次连接实例后,会记住主机密钥指纹,后续连接时若指纹不一致,会提示该错误。可能是由于执行过更换系统盘、更换操作系统、删除了实例系统中的主机密钥文件等操作。
解决办法:验证实例的主机密钥指纹,若无误,执行以下命令,删除本地保存的主机密钥指纹。
ssh-keygen -R <实例公网IP地址>