返回 导航

其他

hangge.com

AWS - 使用密码登录EC2服务器教程(开启root密码SSH登录)

作者:hangge | 2024-01-03 08:56
    Amazon Elastic Compute CloudEC2)是 Amazon Web ServicesAWS)提供的弹性计算服务,允许用户在云中运行虚拟服务器。默认情况下,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 密码:
sudo passwd root

(2)接着切换到切换到 root 身份,切换时会有求输入刚才设置的密码:
su root

4,启用密码身份验证

(1)编辑 SSH 配置文件:
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 实例:
#连接地址可以是公有 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
评论

全部评论(0)

回到顶部