通过ssh执行su -c


10

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

ssh remote-server su -c dmidecode

但这当然会失败,并显示以下错误:

中的标准必须是tty

我该如何工作?我无法使用sudo,并且当我尝试以root @ remote-server身份登录时,它将不接受用于'su'命令的密码。我正在使用RedHat Enterprise Linux 4。


我也建议您考虑使用sudo代替“ su -c”
wfaulk

1
正如我指定的“我不能使用sudo”一样
亚伦

我希望能有更多关于为什么“我不能使用sudo”的信息。
dannysauer

@dannysauer并非所有操作系统都有它。我在这里试图解决相同的问题,除了我不像OP那样使用RedHat。我在没有sudo的unix变体上。我很好奇OP为什么不能在RedHat上使用它,但是无论如何我都很高兴提出了这个问题。
罗杜维克

sudo建立在我熟悉的所有UNIX变体的基础上,但是我会同意并未在所有变体上安装(或配置)它。我真的很好奇为什么没有在那里配置它(我想-已经有好几年了)。:D
dannysauer

Answers:


13

使用-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
有什么理由-t在示例中包含两个s?
wfaulk

2
根据手册页,多个-t选项“即使ssh没有本地tty也可以强制tty分配”
Heath

这在Fedora上对我不起作用。它允许脚本提示我输入密码,但是密码显示为纯文本,并且当我按Enter键时,它只是挂起。
Cerin

@Chris这是一个不同的问题。尝试问一个新问题。
2011年

@Heath感谢您对double-t的评论,该评论对我在Centos上有用
Paul Sheldrake

0

您不能以标准用户身份登录到远程服务器然后使用sudo吗?

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

ssh remote-server 'su -c dmidecode'

要么

ssh remote-server "su -c dmidecode"

3
-1,因为引用命令并不能解决他缺少终端的问题。+1用于建议sudo。洗
wfaulk

正如我指定的“我无法使用sudo”一样
亚伦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.