是否可以以具有 shell 访问权限的用户身份通过 ssh 登录到服务器,然后使用 bash 脚本在 ssh 密钥的帮助下更改为 root 用户?
答案1
有两种方法可以实现此目的:
一个密钥:直接从 localhost ssh 到 root@remote
如果还没有,请生成一个新的密钥对。
ssh-keygen -t dsa -f ~/.ssh/id_dsa -N ""
将公钥复制到远程机器的根帐户中:
ssh user@remote sudo -i bash -c "mkdir -p .ssh && cat >> .ssh/authorized_keys" < ~/.ssh/id_rsa.pub (You will need to enter one or two passwords.)
测试一下是否有效:
ssh [email protected]
两个密钥:使用本地密钥通过 ssh 连接到 user@remote,然后使用远程用户的密钥通过 ssh 连接到 root@remote
以用户身份登录远程计算机
ssh [email protected]
在远程机器上创建密钥对(按照上面的步骤 1)
将密钥复制到 root 帐户:
sudo -i bash -c "mkdir -p .ssh && cat >> .ssh/authorized_keys" < ~/.ssh/id_rsa.pub
作为远程用户,测试它:
ssh root@localhost (No password required)
注销并从家用机器尝试两次跳转:
ssh [email protected] ssh root@localhost
如果有效,现在你可以阻止来自外部 IP 的 root 登录尝试。
问题
如果测试失败:
您可能需要检查
/etc/ssh/sshd_config
远程主机以确保您有一行没有#
注释:PubkeyAuthentication yes
并且:
PermitRootLogin without-password
或者:
PermitRootLogin yes
如果您确实需要更改任何行,请随后重新启动 ssh 服务器:
sudo -i service ssh restart
您可能需要在远程计算机上为 root 设置密码(即使您不打算使用它!):
sudo -i passwd
这实际上并不是理想的,但可能有助于调试。
要再次禁用 root 密码,请运行:
sudo passwd -l root
答案2
在你的 ssh 配置文件(可能是 /etc/ssh/shd_config)的末尾写入:
Match User SomeUserName
ForceCommand echo "*** Now Becoming Root ***" && sudo -i
如果您使用密码,则需要手动输入密码...无论如何,重新启动 ssh 以重新加载配置文件。
sudo service ssh restart