Führen Sie su -c über ssh aus

10

Ich versuche, die BIOS-Version eines Servers über SSH zu überprüfen. Dieser Befehl erfordert Root-Rechte:

ssh remote-server su -c dmidecode

aber das scheitert natürlich mit dem fehler:

Standard in muss ein tty sein

Wie mache ich das? Ich kann sudo nicht verwenden. Wenn ich versuche, mich als root @ remote-server anzumelden, wird das Kennwort, das ich für den Befehl 'su' verwende, nicht akzeptiert. Ich verwende RedHat Enterprise Linux 4.

Aaron
quelle
Ich würde auch vorschlagen, sudo anstelle von "su -c" zu verwenden
wfaulk
1
wie ich angegeben habe "Ich kann kein Sudo verwenden"
Aaron
Ich würde gerne mehr Informationen darüber erhalten, warum "Ich kann kein Sudo verwenden" der Fall war.
Dannysauer
@dannysauer Nicht alle Betriebssysteme haben es. Ich versuche hier, das gleiche Problem zu lösen, außer dass ich nicht wie OP auf RedHat bin. Ich bin auf einer Unix-Variante ohne Sudo. Ich bin gespannt, warum OP es nicht auf RedHat verwenden kann, aber ich bin trotzdem dankbar, dass die Frage gestellt wurde.
Loduwijk
sudo baut auf allen mir bekannten UNIX-Varianten auf, aber ich stimme zu, dass es nicht auf allen installiert (oder konfiguriert) ist. Ich war wirklich neugieriger, warum es dort nicht konfiguriert wurde (ich denke - es ist ein paar Jahre her). : D
dannysauer

Antworten:

13

Verwenden Sie -tdiese Option, um ssh zu zwingen, ein tty zuzuweisen:

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

Sie können auch in Betracht ziehen, root direkt ssh zuzulassen. Wenn Sie die Authentifizierung mit öffentlichem Schlüssel verwenden, ist dies möglicherweise sicherer, da Sie kein Kennwort weitergeben. Wenn Sie sich dazu entschließen, können Sie Root-Anmeldungen von einer anderen Stelle als Ihren vertrauenswürdigen IP-Adressen blockieren, indem Sie Folgendes eingeben /etc/security/access.conf:

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

und stellen Sie sicher, dass UsePAMin nicht deaktiviert istsshd_config

Geocar
quelle
2
Gibt es einen Grund, warum Sie zwei -ts in Ihr Beispiel aufgenommen haben?
Wfaulk
2
Laut der Manpage erzwingen mehrere -t-Optionen "die Zuweisung von tty, auch wenn ssh keine lokale tty hat"
Heath
Bei Fedora funktioniert das bei mir nicht. Das Skript kann mich zur Eingabe meines Passworts auffordern, aber mein Passwort wird als Klartext angezeigt. Wenn ich die Eingabetaste drücke, hängt es einfach.
Cerin
@ Chris das ist ein anderes Problem. Versuchen Sie, eine neue Frage zu stellen.
Geocar
@ Heide danke für den Kommentar über das Double-t, das für mich auf Centos funktioniert
Paul Sheldrake
0

Können Sie sich nicht einfach als Standardbenutzer beim Remote-Server anmelden und dann sudo verwenden ?

Sie können auch versuchen, den von ssh auszuführenden Befehl wie in zu zitieren

ssh remote-server 'su -c dmidecode'

oder

ssh remote-server "su -c dmidecode"
Massimo
quelle
3
-1, weil das Zitieren des Befehls das Fehlen eines Terminals nicht beheben wird. +1 für den Vorschlag von Sudo. Es ist eine Wäsche.
wfaulk
wie ich angegeben habe "Ich kann kein Sudo verwenden"
Aaron