esegue su -c su ssh


10

Sto cercando di controllare la versione BIOS di un server su SSH, un comando che richiede i privilegi di root:

ssh remote-server su -c dmidecode

ma questo ovviamente fallisce con l'errore:

lo standard in deve essere un tty

Come faccio a farlo funzionare? Non riesco a usare sudo e quando provo ad accedere come root @ server remoto non accetta la password che uso per il comando 'su'. Sto usando RedHat Enterprise Linux 4.


Suggerirei anche di usare sudo invece di "su -c"
wfaulk

1
come ho specificato "Non posso usare sudo"
aaron

Mi piacerebbe che ci fossero state ulteriori informazioni sul perché "Non posso usare sudo" era il caso.
dannysauer,

@dannysauer Non tutti i sistemi operativi ce l'hanno. Sto cercando di risolvere lo stesso problema, tranne per il fatto che non sono su RedHat come OP. Sono su una variante unix senza sudo. Sono curioso di sapere perché OP non può utilizzarlo su RedHat, ma sono comunque grato che la domanda sia stata posta.
Loduwijk,

sudo si basa su tutte le varianti UNIX che conosco, ma concorderò che non è installato (o configurato) su tutte. Ero davvero più curioso del perché non fosse configurato lì (penso - sono passati alcuni anni). : D
dannysauer,

Risposte:


13

Usare -tper forzare ssh per allocare un tty:

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

Potresti anche considerare di autorizzare root a ssh direttamente. Se stai utilizzando l'autenticazione con chiave pubblica, questo potrebbe essere più sicuro in quanto non passerai una password. Se decidi di farlo, prendi in considerazione il blocco degli accessi root da qualsiasi luogo tranne i tuoi indirizzi IP affidabili inserendo quanto segue /etc/security/access.conf:

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

e assicurati che UsePAMnon sia disabilitato insshd_config


2
Qual è il motivo per cui hai incluso due -ts nel tuo esempio?
wfaulk,

2
Secondo la pagina man, le opzioni multiple -t "impongono l'allocazione tty, anche se ssh non ha tty locale"
Heath,

Questo non funziona per me su Fedora. Consente allo script di richiedere la mia password, ma la mia password viene visualizzata come testo normale e quando premo Invio, si blocca.
Cerin,

@ Chris è un problema diverso. Prova a fare una nuova domanda.
geocar,

@Heath grazie per il commento sul double -t, che funziona per me su Centos
Paul Sheldrake,

0

Non puoi semplicemente accedere al server remoto come utente standard e quindi utilizzare sudo ?

Puoi anche provare a citare il comando che deve essere eseguito da ssh, come in

ssh remote-server 'su -c dmidecode'

o

ssh remote-server "su -c dmidecode"

3
-1 perché la citazione del comando non risolverà la mancanza di un terminale. +1 per suggerire sudo. È un lavaggio.
wfaulk,

come ho specificato "Non posso usare sudo"
aaron
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.