【问题标题】:How do I become root on a remote server until I am disconnected from that server?在与该服务器断开连接之前,如何成为远程服务器上的 root 用户?
【发布时间】:2014-07-25 10:14:39
【问题描述】:

到目前为止,我有这个:

sshpass -p "password" ssh -q username@192.168.167.654 " [ "$(whoami)" != "root" ] && exec sudo -- "$0" "$@" ; whoami ; [run some commands as root]"

我一直给我用户名作为 whoami 的回答。我想在连接到服务器后立即成为 root(但我只能使用用户名连接到它)。在与服务器的整个连接过程中,我如何才能成为 root?

澄清:

我想访问远程服务器。我必须以“用户名”身份连接,然后切换到 root 以运行和复制只有 root 才能执行的文件。因此,当我通过 ssh 连接到该服务器时,我想成为 root,直到我的命令在远程服务器中结束。我的问题是我不能这样做,因为我没有知识,因此我在这里发布。

限制:

-不能使用 rsync。

-必须以“用户名”连接到服务器,然后切换到root

【问题讨论】:

  • 这不是您的问题的正确站点/社区。试试serverfault.com
  • 谢谢,会发到这里
  • 我认为这是关于编程,特别是如何通过 ssh 以编程方式提升权限。
  • 我不知道它是否必须在 bash 中。但是你可以看看fabric这是我用来在远程服务器上以用户或root身份执行的东西(这是用python编写的)
  • 你能在连接后执行“su -”命令吗(需要root密码)-只要终端打开,你就可以root

标签: linux bash shell scripting suse


【解决方案1】:
sshpass -p "password" ssh -q username@192.168.167.654 exec sudo -s << "END"
  whoami
  commands to run
END

【讨论】:

  • 我收到一条错误消息,提示我尝试了 2 次不正确的密码,但我没有/无法输入任何密码
  • 如果你sshpass -p "password" ssh -q username@192.168.167.654,连接,然后输入sudo -s,是否要求输入密码?
【解决方案2】:

您可以尝试这样的事情(未经测试) 但是我使用相同的概念来完成类似的任务。

scp FileWithCommands.sh UserName@Hostname:/tmp
ssh Username@HostName "su -s -c /tmp/FileWithCommands.sh"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-07
    • 2019-11-09
    • 2020-06-23
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    相关资源
    最近更新 更多