Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am trying to check the BIOS version of a server over SSH, a command that requires root privileges:

ssh remote-server su -c dmidecode

but this of course fails with the error:

standard in must be a tty

How do I make this work? I cannot use sudo, and when I try to log in as root@remote-server, it won't accept the password I use for the 'su' command. I am using RedHat Enterprise Linux 4.

share|improve this question
I would also suggest looking into using sudo instead of "su -c" – wfaulk Oct 8 '09 at 21:32
as I specified "I cannot use sudo" – aaron Oct 9 '09 at 13:13
I'd love for there to have been more information as to why "I cannot use sudo" was the case. – dannysauer Mar 7 at 18:53
up vote 11 down vote accepted

Use -t to force ssh to allocate a tty:

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

You might also consider allowing root to ssh directly. If you're using public key authentication, this may be more secure as you won't be passing a password around. If you decide to do this, consider blocking root logins from anywhere except your trusted IP addresses by putting the following in /etc/security/access.conf:

+ : root :

and make sure UsePAM isn't disabled in sshd_config

share|improve this answer
Any reason you included two -ts in your example? – wfaulk Oct 8 '09 at 21:31
According to the man page, multiple -t options "force tty allocation, even if ssh has no local tty" – Heath Oct 8 '09 at 21:46
This doesn't work for me on Fedora. It allows the script to prompt me for my password, but my password displays as plaintext, and when I press enter, it just hangs. – Cerin Jan 20 '11 at 17:20
@Chris that's a different problem. Try asking a new question. – geocar Mar 13 '11 at 1:14
@Heath thanks for the comment about the double -t, that works for me on Centos – Paul Sheldrake Sep 25 '15 at 3:20

Can't you just log in to the remote server as a standard user and then use sudo?

You could also try quoting the command to be executed by ssh, as in

ssh remote-server 'su -c dmidecode'


ssh remote-server "su -c dmidecode"
share|improve this answer
-1 because quoting the command isn't going to resolve his lack of a terminal. +1 for suggesting sudo. It's a wash. – wfaulk Oct 8 '09 at 21:34
as I specified "I cannot use sudo" – aaron Oct 8 '09 at 21:37

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.