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)读取:
chmod 400 aws.pem
(2)然后使用 SSH 密钥连接到我们的 EC2 实例,连接地址可以是公有 DNS:
ssh -i "aws.pem" ec2-user@ec2-3-27-168-146.ap-southeast-2.compute.amazonaws.com
(3)也可以是实例分配到的公有 IP 地址:
ssh -i "aws.pem" ec2-user@3.27.168.145
3,更改 root 用户密码
(1)首先执行如下命令,执行后输入并创建 root 密码:
(2)接着切换到切换到 root 身份,切换时会有求输入刚才设置的密码:
sudo passwd root
(2)接着切换到切换到 root 身份,切换时会有求输入刚才设置的密码:
su root
4,启用密码身份验证
(1)编辑 SSH 配置文件:
(2)找到最下面的 PasswordAuthentication no,把 no 改成 yes:
vi /etc/ssh/sshd_config
(2)找到最下面的 PasswordAuthentication no,把 no 改成 yes:
(3)接下来,还需要把 # PermitRootLogin yes 改成 PermitRootLogin yes
(4)修改保存后,执行如下命令重启一下 sshd 服务:
sudo service sshd restart
5,使用密码登录
(1)经过上面设置以后,我们可以使用 root 用户名和密码通过 SSH 连接到 EC2 实例:
(2)如果连接时还报“Permission denied (publickey,gssapi-keyex,gssapi-with-mic).”错误,那么还有其他配置文件需要修改:
(4)将其中的 PasswordAuthentication 改为 yes:
#连接地址可以是公有 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 镜像,还需要编辑如下配置文件:
vi /etc/ssh/sshd_config.d/50-cloud-init.conf
(4)将其中的 PasswordAuthentication 改为 yes:
(5)修改保存后,执行如下命令重启一下 sshd 服务即可:
sudo service sshd restart
附:自动配置 shell 脚本
(1)如果觉得连接服务器后要手动修改密码以及 SSH 配置文件略显麻烦,我们也可以创建一个 rootssh.sh 的 shell 脚本来帮忙自动化设置,内容如下:#!/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 脚本中,免去我们输入的麻烦:
#!/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)然后将该脚本赋予权限并执行即可:
chmod 777 ./rootssh.sh ./rootssh.sh