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.