wykonaj su -c przez ssh


10

Próbuję sprawdzić wersję systemu BIOS serwera za pośrednictwem SSH, polecenia wymagającego uprawnień roota:

ssh remote-server su -c dmidecode

ale to oczywiście kończy się błędem:

standardem musi być tty

Jak sprawić, żeby to działało? Nie mogę używać sudo, a kiedy próbuję zalogować się jako root @ serwer zdalny, nie zaakceptuje hasła, którego używam do polecenia „su”. Używam RedHat Enterprise Linux 4.


Sugerowałbym również skorzystanie z sudo zamiast „su -c”
wfaulk,

1
jak określiłem „Nie mogę używać sudo”
aaron

Chciałbym, aby było więcej informacji na temat tego, dlaczego „Nie mogę używać sudo”.
dannysauer

@dannysauer Nie wszystkie systemy operacyjne mają to. Próbuję rozwiązać ten sam problem, tyle że nie jestem na RedHat jak OP. Jestem na wariancie unixowym bez sudo. Jestem ciekawy, dlaczego OP nie może używać go na RedHat, ale i tak jestem wdzięczny za to pytanie.
Loduwijk

sudo opiera się na wszystkich znanych mi wersjach UNIX, ale zgodzę się, że nie jest zainstalowany (ani skonfigurowany) na wszystkich z nich. Byłem naprawdę ciekaw, dlaczego nie został tam skonfigurowany (myślę, że minęło kilka lat). : D
dannysauer

Odpowiedzi:


13

Użyj, -taby wymusić na ssh przydzielenie tty:

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

Możesz także rozważyć zezwolenie rootowi na ssh bezpośrednio. Jeśli korzystasz z uwierzytelniania za pomocą klucza publicznego, może to być bezpieczniejsze, ponieważ nie będziesz przekazywał hasła. Jeśli zdecydujesz się to zrobić, rozważ zablokowanie logowania użytkownika root z dowolnego miejsca poza zaufanymi adresami IP, umieszczając następujące elementy /etc/security/access.conf:

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

i upewnij się, że UsePAMnie jest wyłączony wsshd_config


2
Czy jest jakiś powód, dla którego umieściłeś dwie -tlitery w swoim przykładzie?
wfaulk

2
Według strony podręcznika wiele opcji -t „wymusza alokację tty, nawet jeśli ssh nie ma lokalnego tty”
Heath,

To nie działa dla mnie w Fedorze. Pozwala skryptowi pytać mnie o moje hasło, ale moje hasło wyświetla się jako zwykły tekst, a kiedy nacisnę Enter, po prostu się zawiesza.
Cerin,

@Chris to inny problem. Spróbuj zadać nowe pytanie.
geocar

@Dziękuję za komentarz na temat double -t, który działa dla mnie na Centos
Paul Sheldrake

0

Czy nie możesz zalogować się do zdalnego serwera jako zwykły użytkownik, a następnie użyć sudo ?

Możesz także spróbować zacytować polecenie, które ma zostać wykonane przez ssh, jak w

ssh remote-server 'su -c dmidecode'

lub

ssh remote-server "su -c dmidecode"

3
-1, ponieważ zacytowanie polecenia nie rozwiąże jego braku terminala. +1 za sugerowanie sudo. To jest pranie.
wfaulk

jak określiłem „Nie mogę używać sudo”
aaron
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.