通过 ssh 执行 su -c

通过 ssh 执行 su -c

我正在尝试通过 SSH 检查服务器的 BIOS 版本,该命令需要 root 权限:

ssh remote-server su -c dmidecode

但这当然会失败并出现错误:

标准输入必须是 tty

我该如何实现这一点?我无法使用 sudo,当我尝试以 root@remote-server 身份登录时,它不会接受我用于“su”命令的密码。我正在使用 RedHat Enterprise Linux 4。

答案1

用于-t强制 ssh 分配一个 tty:

ssh -t -t remote-user su -c dmidecode

您也可以考虑直接允许 root 登录 ssh。如果您使用公钥身份验证,这可能更安全,因为您不会传递密码。如果您决定这样做,请考虑通过输入以下内容来阻止除您信任的 IP 地址之外的任何地方的 root 登录/etc/security/access.conf

+ : root : 10.20.30.40
- : root : ALL EXCEPT LOCAL

并确保UsePAM没有被禁用sshd_config

答案2

你不能以标准用户身份登录到远程服务器然后使用须藤

您还可以尝试引用要由 ssh 执行的命令,例如

ssh remote-server 'su -c dmidecode'

或者

ssh remote-server "su -c dmidecode"

相关内容