阿里云ECS服务器配置ssh登录
环境
- 阿里云ECS云服务器:Ubuntu 24.04(x64)
- 客户端:Windows 11 家庭版 PowerShell 7.5.2
登录方法
Workbench
在试用或者购买阿里云ECS云服务器后,访问 https://ecs.console.aliyun.com 即可打开控制台:

点击实例名字,进入详情页面:

点击右上角的“远程登录”,弹出远程连接框:

在这里可以打开“AI助手”,和它对话,直接询问有关连接服务器的问题:

也可以点击“立即登录”按钮,打开Workbench:

注:从控制台的Workbench连接服务器,不需要用户名和密码。
密钥对登录
注:如果连接不到服务器的公网IP地址( Connection timed out ),可能是22端口没有打开,需要在安全组 -> 入方向,手动添加一个规则。应该也能用如下命令:
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
阿里云创建密钥对
在控制台的左侧导航条点击“密钥对”,然后点击“创建密钥对”按钮:

创建密钥后,会生成并下载一个 *.pem 文件。
服务器和客户端分别操作:
- 服务器:在“密钥对管理”页面,点击“绑定密钥对”(绑定后,提示需重启服务器)
绑定后,检查服务器,发现 ~/.ssh/authorized_keys 文件里多出了一个public key。
- 客户端:以Windows PowerShell为例,首先把pem文件移至当前用户根目录下的
.ssh目录,并把其权限设置为只有当前用户可读:

注:这一步貌似在一定条件下是可选的:
- 如果在
.ssh目录下,那么默认权限也OK - 如果在别处,比如
C:\目录下,那么默认权限会报错Permissions are too open。
然后就可以通过私钥来免密登录服务器了:
PS C:\> ssh -i C:\Users\duke_\.ssh\ding.pem root@xxxxxx
Welcome to Ubuntu 24.04.2 LTS (GNU/Linux 6.8.0-64-generic x86_64)
......
root@iZ2ze46sxirvp17kje7v84Z:~#
如果不想每次登录时,输入这么多内容,可以编辑用户根目录下的 .ssh\config 文件,添加如下内容:
Host ding2
HostName xxxxxxx
User root
IdentityFile "C:\Users\duke_\.ssh\ding.pem"
这样,登录就简化了许多:
ssh ding2
注:pem文件本质上和id_rsa文件类似,里面都是包含了私钥信息。
pem文件开头是:
-----BEGIN RSA PRIVATE KEY-----
id_rsa 文件开头是:
-----BEGIN OPENSSH PRIVATE KEY-----
事实上,通过 ssh-keygen 命令,可以把PEM标准格式(RSA PRIVATE KEY)和OPENSSH格式互相转化。
只不过, id_rsa 是默认的文件名,也就是说,如果在 config 文件里不指定私钥文件,ssh默认会去找 id_rsa 文件。
总结:使用阿里云密钥对,是阿里云帮你生成好公钥和私钥(标准格式,兼容老旧ssh)。公钥是阿里云控制台管理,私钥是下载后由用户自己管理。通过控制台可以把公钥绑定到一个或多个服务器上(本质是把公钥放到 ~/.ssh/authorized_keys 文件里)。在客户端ssh登录时,只需指定(可以每次登录时显式指定,或者通过 .ssh\config 文件指定别名)对应的pem文件(即私钥),就可以免密登录服务器。
自行创建密钥对
顾名思义,自己创建密钥对,生成如下两个文件:
id_rsa:私钥文件id_rsa.pub:公钥文件
然后把后者的内容复制到服务器的 ~/.ssh/authorized_keys 文件里。在客户端,确保 id_rsa 文件在根目录的 .ssh 目录下,然后编辑 config 文件,添加如下内容:
Host ding1
HostName xxxxxxx
User root
Port 22
这样,就可以免密登录了:
ssh ding1
和前面提到的阿里云创建密钥对,在使用上其实并没有本质区别。
密码登录
如果没有创建密钥对,则默认是无法ssh登录的:
PS C:\> ssh root@39.106.21.57
root@39.106.21.57: Permission denied (publickey).
这是因为,服务器配置了禁止使用密码登录方式。
打开 /etc/ssh/sshd_config 文件:
PermitRootLogin yes # 是否允许root登录
PasswordAuthentication yes # 是否允许密码登录
如果是 no ,将其修改为 yes ,然后重启ssh服务:
systemctl restart ssh
这样,客户端就可以通过密码方式登录服务器了。
注:在服务器上设置密码:
passwd:修改当前用户的密码passwd xxx:使用root用户时,可修改其它用户的密码
参考
https://ecs.console.aliyun.com
更多推荐

所有评论(0)