通过ssh用户执行root命令

1 su ssh sudo

我的目标是通过 ssh 从另一台 Linux 主机以 root 用户身份执行命令。

问题是:环境不允许直接访问root用户。

有效的手动方式是首先通过 ssh-key 连接到非特权用户,然后 su 到 sudo 特权用户,然后 sudo -i/sudo su 到 root 帐户并执行命令。

一种对我来说非常方便的解决方案是使用Python 和 Paramiko

我的问题是,如果没有 Python,这样的事情是否也可能实现。最后,我想执行一个脚本,该脚本读取特权用户密码,然后以 root 用户身份在远程系统上执行命令。

我想到了这样的事情:

ssh -t user01@host su user02 -c 'sudo -S cat /etc/shadow'
Run Code Online (Sandbox Code Playgroud)

如果我直接在机器上执行此命令,它可以工作,但是一旦我通过 ssh 尝试它,就会出现错误:su: invalid option -- 'S'

在我看来,这是 ssh -t 和 sudo -S 组合的问题,但我不明白。

有什么建议么?感谢您的帮助!

小智 5

...首先通过 ssh-key 连接到非特权用户,然后 su 到 sudo 特权用户,然后 sudo -i/sudo su 到 root 帐户并执行命令。

sudo 的全部目的是将登录的人与他们[被允许]执行的 sudo 命令直接关联起来。中间有一个“共享”帐户完全破坏了这一点。

...我想执行一个脚本,该脚本读取特权用户密码,然后以 root 用户身份在远程系统上执行命令。

再次强调,[正确使用] sudo消除了所有这些麻烦。
您使用密码登录,然后使用 sudo 执行操作(再次使用您的密码,如果是这样配置的)。您不需要“特权用户”帐户的密码(因为不应该有一个),并且您当然不需要(或想要root的密码(因为没有人应该得到密码) 。

我建议您的系统管理员需要用 sudo 的打印和卷起的手册页来快速打动他们的头。

您应该以您自己的身份登录,并直接从您的帐户使用 sudo。
(如果他们抱怨“管理开销”,请建议一个允许使用 sudo 的本地组,您的帐户将是该组的成员)。