AWS - 使用密码登录EC2服务器教程(开启root密码SSH登录)
Amazon Elastic Compute Cloud(EC2)是 Amazon Web Services(AWS)提供的弹性计算服务,允许用户在云中运行虚拟服务器。默认情况下,AWS EC2 实例只允许通过 SSH 密钥进行身份验证,但有时候我们希望通过密码登录以方便管理。本文演示如何在 EC2 实例上开启 root 密码 SSH 登录。
1,创建 EC2 实例
在 AWS 控制台中,创建一个新的 EC2 实例。在创建过程中需要创建一个密钥对,密钥对创建完毕后会自动下载到本地,需要保存好。
2,连接到 EC2 实例
(1)首先执行如下命令将密钥文件的权限设置为只允许所有者(owner)读取:
1 | chmod 400 aws.pem |
(2)然后使用 SSH 密钥连接到我们的 EC2 实例,连接地址可以是公有 DNS:
1 | ssh - i "aws.pem" ec2 - user@ec2 - 3 - 27 - 168 - 146.ap - southeast - 2.compute .amazonaws.com |
(3)也可以是实例分配到的公有 IP 地址:
1 | ssh - i "aws.pem" ec2 - user@ 3.27 . 168.145 |
3,更改 root 用户密码
(1)首先执行如下命令,执行后输入并创建 root 密码:
(2)接着切换到切换到 root 身份,切换时会有求输入刚才设置的密码:
1 | sudo passwd root |
(2)接着切换到切换到 root 身份,切换时会有求输入刚才设置的密码:
1 | su root |
4,启用密码身份验证
(1)编辑 SSH 配置文件:
(2)找到最下面的 PasswordAuthentication no,把 no 改成 yes:
1 | vi / etc / ssh / sshd_config |
(2)找到最下面的 PasswordAuthentication no,把 no 改成 yes:
(3)接下来,还需要把 # PermitRootLogin yes 改成 PermitRootLogin yes
(4)修改保存后,执行如下命令重启一下 sshd 服务:
1 | sudo service sshd restart |
5,使用密码登录
(1)经过上面设置以后,我们可以使用 root 用户名和密码通过 SSH 连接到 EC2 实例:
(2)如果连接时还报“Permission denied (publickey,gssapi-keyex,gssapi-with-mic).”错误,那么还有其他配置文件需要修改:
(4)将其中的 PasswordAuthentication 改为 yes:
1 2 3 4 5 | #连接地址可以是公有 DNS ssh root@ec2 - 3 - 27 - 168 - 146.ap - southeast - 2.compute .amazonaws.com #也可以是实例分配到的公有IP地址 ssh root@ 3.27 . 168.145 |
(2)如果连接时还报“Permission denied (publickey,gssapi-keyex,gssapi-with-mic).”错误,那么还有其他配置文件需要修改:
(3)比如我使用的是 RedHat 镜像,还需要编辑如下配置文件:
1 | vi / etc / ssh / sshd_config.d / 50 - cloud - init.conf |
(4)将其中的 PasswordAuthentication 改为 yes:
附:自动配置 shell 脚本
(1)如果觉得连接服务器后要手动修改密码以及 SSH 配置文件略显麻烦,我们也可以创建一个 rootssh.sh 的 shell 脚本来帮忙自动化设置,内容如下:1 2 3 4 5 6 7 8 9 10 11 | #!/bin/bash # 更改root用户密码 sudo passwd root su root # 启用密码身份验证 sudo sed - i 's/PasswordAuthentication no/PasswordAuthentication yes/' / etc / ssh / sshd_config sudo sed - i 's/#PermitRootLogin.*/PermitRootLogin yes/' / etc / ssh / sshd_config sudo sed - i 's/PasswordAuthentication no/PasswordAuthentication yes/' / etc / ssh / sshd_config.d / 50 - cloud - init.conf sudo service sshd restart |
(2)上面脚本执行后会通过交互的方式让我们输入要设置的密码,我们也可以进一步简化将密码直接写在 shell 脚本中,免去我们输入的麻烦:
1 2 3 4 5 6 7 8 9 10 11 | #!/bin/bash # 更改root用户密码 echo "root:123" | sudo chpasswd echo "123" |su root # 启用密码身份验证 sudo sed - i 's/PasswordAuthentication no/PasswordAuthentication yes/' / etc / ssh / sshd_config sudo sed - i 's/#PermitRootLogin.*/PermitRootLogin yes/' / etc / ssh / sshd_config sudo sed - i 's/PasswordAuthentication no/PasswordAuthentication yes/' / etc / ssh / sshd_config.d / 50 - cloud - init.conf sudo service sshd restart |
(3)然后将该脚本赋予权限并执行即可:
1 2 | chmod 777 . / rootssh.sh . / rootssh.sh |
找了好多, 这个才真的有用, 原来还有其他地方要修改。在/etc/ssh/sshd_config.d/中
666