![通过 ssh 执行 su -c](https://linux22.com/image/495611/%E9%80%9A%E8%BF%87%20ssh%20%E6%89%A7%E8%A1%8C%20su%20-c.png)
我正在尝试通过 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"