ejecutar su -c sobre ssh


10

Estoy tratando de verificar la versión del BIOS de un servidor a través de SSH, un comando que requiere privilegios de root:

ssh remote-server su -c dmidecode

pero esto, por supuesto, falla con el error:

estándar en debe ser un tty

¿Cómo hago para que esto funcione? No puedo usar sudo, y cuando intento iniciar sesión como root @ remote-server, no aceptará la contraseña que uso para el comando 'su'. Estoy usando RedHat Enterprise Linux 4.


También sugeriría mirar en el uso de sudo en lugar de "su -c"
wfaulk

1
como especifiqué "No puedo usar sudo"
aaron

Me encantaría que hubiera más información sobre por qué "No puedo usar sudo" fue el caso.
dannysauer

@dannysauer No todos los sistemas operativos lo tienen. Estoy tratando de resolver el mismo problema, excepto que no estoy en RedHat como OP. Estoy en una variante de Unix sin sudo. Tengo curiosidad por saber por qué OP no puede usarlo en RedHat, pero de todos modos estoy agradecido de que se haya hecho la pregunta.
Loduwijk

sudo se basa en todas las variantes de UNIX con las que estoy familiarizado, pero estoy de acuerdo en que no está instalado (o configurado) en todas ellas. Tenía mucha más curiosidad por qué no estaba configurado allí (creo que han pasado unos años). : D
dannysauer

Respuestas:


13

Use -tpara forzar ssh para asignar un tty:

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

También puede considerar permitir que la raíz ssh directamente. Si está utilizando la autenticación de clave pública, esto puede ser más seguro ya que no pasará una contraseña. Si decide hacer esto, considere bloquear los inicios de sesión raíz desde cualquier lugar, excepto sus direcciones IP de confianza, ingresando lo siguiente en /etc/security/access.conf:

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

y asegúrese de UsePAMque no esté deshabilitado ensshd_config


2
¿Alguna razón por la que incluiste dos -ts en tu ejemplo?
wfaulk

2
Según la página del manual, las opciones múltiples -t "fuerzan la asignación de tty, incluso si ssh no tiene tty local"
Heath

Esto no funciona para mí en Fedora. Permite que el script me solicite mi contraseña, pero mi contraseña se muestra como texto sin formato y, cuando presiono Intro, simplemente se cuelga.
Cerin

@ Chris ese es un problema diferente. Intenta hacer una nueva pregunta.
geocar

@Heath gracias por el comentario sobre el doble -t, que funciona para mí en Centos
Paul Sheldrake

0

¿No puede simplemente iniciar sesión en el servidor remoto como usuario estándar y luego usar sudo ?

También puede intentar citar el comando que ssh ejecutará, como en

ssh remote-server 'su -c dmidecode'

o

ssh remote-server "su -c dmidecode"

3
-1 porque citar el comando no va a resolver su falta de terminal. +1 por sugerir sudo. Es un lavado.
wfaulk

como he especificado "No puedo usar sudo"
Aaron
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.