Czy można wykonać komendę przez ssh z użytkownikiem nologin?


13

Jeśli użytkownik ma, loginShell=/sbin/nologinczy nadal jest to możliwe

ssh user@machine [command]

zakładając, że użytkownik ma odpowiednie klucze ssh w swoim katalogu domowym, których można użyć do uwierzytelnienia?

Moim celem jest utrzymanie użytkownika jako nologina, ale nadal w stanie wykonywać polecenia na kilku innych komputerach w sieci (podobnie jak w przypadku użycia sudo -u) i zastanawiam się, czy to rozsądny kurs.


1
To powinno działać. commandJest prowadzony zamiast powłoki logowania.
— orion

1
To przeczy celowi konfiguracji /sbin/nologinjako powłoki. Jeśli zależy Ci na bezpieczeństwie konta, wystarczy wyłączenie uwierzytelniania hasła i używanie kluczy ssh.
— Creek

@Creek istnieje różnica między powłokami logowania a innymi instancjami powłoki. Więc to, o co pyta, niekoniecznie musi pokonać cel / sbin / nologin. Być może chce wykonać jakąś pracę poza kontekstem powłoki logowania.
— Michael Martinez,

7
@orion Wrong. Polecenie jest wykonywane przez powłokę logowania.
— Gilles „SO- przestań być zły”

@MichaelMartinez w kontekście swojego przykładu, jeśli powłoka użytkownika jest, /sbin/nologinto użytkownik nie będzie mógł zalogować się ani wykonywać poleceń na komputerze. cronjobs mogą być uruchamiane jako użytkownik i sftpmogą być skonfigurowane do otwierania sesji, ale otwarcie powłoki za pomocą ssh nie nastąpi
— Creek

Odpowiedzi:


17

Ustawienie /sbin/nologinjako powłoka użytkownika (lub /bin/falselub /bin/true, które są prawie równoważne ) zabrania użytkownikowi logowania się w celu uruchomienia dowolnej komendy. SSH zawsze wywołuje powłokę logowania użytkownika w celu uruchomienia poleceń, dlatego należy ustawić powłokę logowania na taką, która może uruchamiać niektóre polecenia.

Istnieje kilka ograniczonych powłok, które pozwalają użytkownikom na uruchamianie tylko kilku poleceń. Na przykład rssh i scponly są zarówno takie pociski, które pozwalają użytkownikowi na uruchomienie kilku predefiniowanych komend (takich jak scp, sftp-server, rsync, ...). Zobacz także Ogranicz dostęp użytkownika w systemie Linux i Czy potrzebujesz powłoki dla SCP?


Dziękuję, ostatecznie zrezygnowałem z nadania konta powłoki logowania, aby mógł on uruchamiać polecenia zdalne. Lepszym rozwiązaniem byłoby prawdopodobnie ssh jako bieżący użytkownik i wywołanie polecenia sudo -u dla polecenia ssh, ale w moim przypadku nie ma to pełnego zastosowania.
— Centimane

1

Wydaje się, że odpowiedź brzmi „nie”.

ssh user@machine [command]

z wprowadzonymi kluczami ssh powoduje tylko:

This account is currently not available

zamiast wykonywania polecenia, wydaje się, że będę musiał dać mu dostęp do bash.


-4

Nie wiem, czy jest to możliwe (powinno być łatwe do przetestowania), ale jest funkcja, która prawdopodobnie odpowiada na twoje pytanie w określony sposób, a w każdym razie rozwiązuje twój problem.

Możesz dodać polecenie do linii klucza w authorized_keys. W takim przypadku polecenie to zostanie wykonane, nic więcej. Zakładam, że to działa, /sbin/nologinponieważ powłoka i tak powinna zostać zignorowana.

Ale do każdego polecenia, na które zezwolisz, potrzebujesz innego klucza.


Niestety rozwiązanie, którego potrzebuję, musiałoby być bardziej elastyczne
— Centimane

jeśli łatwo go przetestować, należy go przetestować przed napisaniem odpowiedzi.
— Michael Martinez,

@MichaelMartinez Zadaniem pytającego jest wykonanie łatwych testów przed zapytaniem. Nietrudno zauważyć, że nie odpowiedziałem na pytanie, ale zaproponował problem, który spowodował pytanie. Co doskonale nadaje się jako odpowiedź. Głosowanie w dół jest po prostu głupie. Czy skrytykowałbyś odpowiedź bez pierwszego akapitu? Dokładnie.
— Hauke ​​Laging,

3
Komenda in authorized_keysjest wykonywana przez powłokę logowania, więc nie, to nie działa (nie bez dodatkowej, niebanalnej konfiguracji). (Jak głosowanie błędnej odpowiedzi jest „głupie”? Szanuj innych .)
— Gilles „S- przestań być zły”
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.