Linux Root免密登录

ROOT免密

希望 root 用户可以无需密码登录,你可以进行以下配置:

步骤 1:备份 PAM 配置文件

首先,备份现有的 PAM 配置文件,以防出现问题时可以恢复:

sudo cp /etc/pam.d/login /etc/pam.d/login.bak

步骤 2:修改 PAM 配置文件

使用文本编辑器编辑 PAM 配置文件:

sudo vi /etc/pam.d/login

在文件的开头添加或修改以下内容,以便仅对 root 用户启用无密码登录:

auth       [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       sufficient   pam_succeed_if.so user = root
auth       required     pam_unix.so

添加的 pam_succeed_if.so 行表示如果用户是 root,则认证通过,不需要密码。

步骤 3:确保 /etc/securetty 包含你想要的终端

确保 /etc/securetty 文件中包含你希望 root 用户可以无密码登录的终端,例如 tty1、tty2 等。打开并编辑 /etc/securetty 文件:

sudo vi /etc/securetty

确保文件中包含类似以下内容:

tty1
tty2
tty3
tty4
tty5
tty6
ttyS0

步骤 4:重启系统

完成上述修改后,重启系统:

sudo reboot

这样,当你使用 root 用户登录时,不会要求输入密码。非 root 用户仍然需要输入密码进行登录。

注意事项

  • 安全性警告:即使只为 root 用户配置无密码登录,仍然存在安全风险。确保此设置仅在受信任和安全的环境中使用。
  • 恢复配置:如果遇到任何问题,可以使用备份的 PAM 配置文件恢复:
sudo cp /etc/pam.d/login.bak /etc/pam.d/login

ROOT自动登录:

步骤 1:创建getty@tty1.service.d目录

首先,创建一个目录来放置我们自定义的服务配置文件:

sudo mkdir -p /etc/systemd/system/getty@tty1.service.d

步骤 2:创建override.conf文件

在该目录中创建一个override.conf文件:

sudo vi /etc/systemd/system/getty@tty1.service.d/override.conf

在文件中添加以下内容:

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin root --noclear %I $TERM
Type=idle

这段配置将使得在tty1终端上自动登录root用户。

步骤 3:重启getty服务

为了使更改生效,需要重新加载systemd配置并重启getty服务:

sudo systemctl daemon-reload
sudo systemctl restart getty@tty1.service

可选步骤:禁用SELinux的影响

如果你的系统启用了SELinux,它可能会阻止自动登录。为了避免这种情况,你可以临时设置SELinux为宽容模式:

sudo setenforce 0

为了永久修改SELinux配置,你需要编辑配置文件:

sudo vi /etc/selinux/config

将以下行修改为:

SELINUX=permissive

步骤 4:重启系统

完成上述步骤后,重启系统:

sudo reboot

系统重启后,root用户应该会自动登录到tty1终端。

注意事项

  • 安全性警告:自动登录root用户会极大地降低系统的安全性。请确保此设置仅在受信任的环境中使用,例如单用户模式或隔离网络。
  • 仅限控制台登录:这种方法仅适用于本地控制台(如tty1)。如果需要远程自动登录(例如SSH),建议使用SSH密钥对而不是自动登录root。

隐性问题:

SSH连接时无法连接成功,也就是说这两种方法仅限控制台登录:这种方法仅适用于本地控制台(如tty1)。如果需要远程自动登录(例如SSH)还是需要输入原本密码,或选择SSH密钥登入和修改SSH服务的配置

要配置 Linux 系统以实现 root 用户免密登录,需完成以下几个关键步骤: ### 生成 SSH 密钥对 首先,在客户端生成 SSH 密钥对。默认情况下,`ssh-keygen` 命令会生成名为 `id_rsa`(私钥)和 `id_rsa.pub`(公钥)的文件,存储在 `~/.ssh/` 路径下。可以通过以下命令生成: ```bash ssh-keygen -t rsa -b 2048 ``` 此命令将生成一个 RSA 类型的密钥对,密钥长度为 2048 位。在生成过程中,可以选择为私钥设置密码,也可以直接按回车跳过[^4]。 ### 传输公钥到目标服务器 接下来,需要将生成的公钥(`id_rsa.pub`)添加到目标服务器的 `~/.ssh/authorized_keys` 文件中。可以通过以下命令实现: ```bash cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ``` 确保目标服务器上存在 `.ssh` 目录,并且 `authorized_keys` 文件具有适当的权限设置。可以通过以下命令创建并设置权限: ```bash mkdir -p ~/.ssh touch ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys ``` 如果公钥文件在另一台机器上,可以使用 `scp` 命令将其传输到目标服务器: ```bash scp -r ~/.ssh/id_rsa.pub root@192.168.1.133:~/.ssh/ ``` 然后在目标服务器上执行上述命令将公钥追加到 `authorized_keys` 文件中[^2]。 ### 配置 SSH 服务 为了允许 root 用户通过 SSH 免密登录,需要修改 `/etc/ssh/sshd_config` 文件。确保以下配置项已正确设置: ```bash PermitRootLogin yes PasswordAuthentication yes PubkeyAuthentication yes ``` `PermitRootLogin yes` 允许 root 用户通过 SSH 登录;`PasswordAuthentication yes` 启用密码认证,以便在公钥认证失败时仍可使用密码登录;`PubkeyAuthentication yes` 启用公钥认证方式[^1]。 此外,还可以使用 `Match User` 指令来限制特定用户的登录行为。例如,只允许 root 用户免密登录: ```bash Match User root PermitRootLogin yes PasswordAuthentication yes PubkeyAuthentication yes ``` 完成配置后,重启 SSH 服务以使更改生效: ```bash systemctl restart sshd ``` ### 测试免密登录 最后,测试免密登录是否成功。在客户端执行以下命令尝试登录目标服务器: ```bash ssh root@192.168.1.133 ``` 如果一切配置正确,应该能够无需输入密码即可成功登录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值