环境

  • 阿里云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

更多推荐