一个密钥:直接从 localhost ssh 到 root@remote

一个密钥:直接从 localhost ssh 到 root@remote

是否可以以具有 shell 访问权限的用户身份通过​​ ssh 登录到服务器,然后使用 bash 脚本在 ssh 密钥的帮助下更改为 root 用户?

答案1

有两种方法可以实现此目的:

一个密钥:直接从 localhost ssh 到 root@remote

  1. 如果还没有,请生成一个新的密钥对。

    ssh-keygen -t dsa -f ~/.ssh/id_dsa -N ""
    
  2. 将公钥复制到远程机器的根帐户中:

    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.)
    
  3. 测试一下是否有效:

    ssh [email protected]
    

两个密钥:使用本地密钥通过 ssh 连接到 user@remote,然后使用远程用户的密钥通过 ssh 连接到 root@remote

  1. 以用户身份登录远程计算机

    ssh [email protected]
    
  2. 在远程机器上创建密钥对(按照上面的步骤 1)

  3. 将密钥复制到 root 帐户:

    sudo -i bash -c "mkdir -p .ssh && cat >> .ssh/authorized_keys" < ~/.ssh/id_rsa.pub
    
  4. 作为远程用户,测试它:

    ssh root@localhost
    
    (No password required)
    
  5. 注销并从家用机器尝试两次跳转:

    ssh [email protected] ssh root@localhost
    
  6. 如果有效,现在你可以阻止来自外部 IP 的 root 登录尝试

问题

如果测试失败:

  1. 您可能需要检查/etc/ssh/sshd_config远程主机以确保您有一行没有#注释:

    PubkeyAuthentication yes
    

    并且:

    PermitRootLogin without-password
    

    或者:

    PermitRootLogin yes
    

    如果您确实需要更改任何行,请随后重新启动 ssh 服务器:

    sudo -i service ssh restart
    
  2. 您可能需要在远程计算机上为 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

相关内容