Włącz logowanie do mojego komputera Mac tylko kluczem ssh dla 1 użytkownika


21

Mam komputer Macbook Air, do którego chciałbym zezwolić na zdalny dostęp SSH bez hasła. Utworzyłem użytkownika remotepair, do którego się zalogowałem i potwierdziłem, że mogę używać komputera Mac. Dodałem również tego użytkownika do listy dozwolonych użytkowników usługi „Usuń logowanie” i włączyłem usługę. Wszystko to zostało wykonane w panelu sterowania „Udostępnianie”.

Mam klucz publiczny innego komputera i dodałem go do pliku /Users/remotepair/.ssh/authorized_keys. Gdy drugi komputer ssh remotepair@<my ip>nadal wyświetla monit o hasło.

Jak wyłączyć monit o hasło?


1
Polecam dodanie „Uwierzytelniania tylko za pomocą klucza SSH” do tytułu pytania - sposób, w jaki czyta się teraz, brzmi jak zwykły login GUI.
NReilingh

Odpowiedzi:


27

Aby wyłączyć uwierzytelnianie za pomocą hasła, musisz je edytować /etc/sshd_config. W Terminal:

sudo vim /etc/sshd_config

(lub zastąp swoim ulubionym edytorem)

Poszukaj linii:

#ChallengeResponseAuthentication yes

I zmień na:

ChallengeResponseAuthentication no

To znaczy, usuń #na początku i zmień yesnano .

Wszystkie kolejne logowania ssh będzie teraz wymagać do korzystania z klucza ssh i nie poprosi o podanie hasła. Upewnij się, że Twój klucz ssh działa, zanim to zrobisz, jeśli nie masz dostępu lokalnego! Nie trzeba ponownie uruchamiać demona ssh ani nic, ponieważ jest on uruchamiany na żądanie dla każdego nowego połączenia przychodzącego. Zauważ, że możesz także zobaczyć PasswordAuthenticationlinię, ale domyślnie nojuż jest.

Jeśli twoje klucze ssh nie działają, to naprawdę osobny problem, ale to odpowiada na pytanie, jakie jest teraz postawione :)


Muszę również dodać użytkownika do ustawienia AllowUser. Mogę tylko zgadywać, że konfiguracja GUI nie zmodyfikowała również tego wiersza tekstu.
Jason

7
Uwaga: w późniejszych wersjach Mac OS X (zdecydowanie w El Capitan) sshd_config został przeniesiony do /etc/ssh/.
zelk

2
Uwaga: w systemie MacOS Sierra (wersja 10.12.x) wartość domyślna PasswordAuthenticationzmieniła się na yes, więc należy ją zmienić na no.
Travis Clarke

3

Aby zaktualizować odpowiedź dla systemu macOS Sierra (w szczególności 10.12.6), wygląda na to, że plik konfiguracyjny jest teraz /etc/ssh/sshd_config

2 wiersze muszą być odkomentowane + zmodyfikowane, aby całkowicie wyłączyć uwierzytelnianie za pomocą hasła: (Są to wiersze od 57 do 62 włącznie w sshd_configpliku domyślnym )

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no

# Change to no to disable s/key passwords
ChallengeResponseAuthentication no

Jak wspomniano wcześniej, możesz włączyć / wyłączyć dostęp ssh z GUI System Preferences.app, a pomiędzy edycją konfiguracji nie jest wymagane ponowne uruchomienie demona.


1

Powinieneś sprawdzić uprawnienia zaangażowanych katalogów: /Users/remotepair/i /Users/remotepair/.sshnie mogą one zezwalać na dostęp do zapisu „innym” użytkownikom. Mój.ssh ma prawa dostępu tylko dla właściciela.

Ponadto w systemie zdalnym ssh -v remotepair@yoursystemsprawdź, które metody autoryzacji są dozwolone i podjęto próbę. Uważaj na Authentications that can continue: publickey,password,keyboard-interactive. Może musisz włączyć RSAAuthenticationw swoim systemie.


1

W systemie testowym tutaj wyłączenie monitu SSH wymagało dodania następujących dwóch wierszy /etc/sshd_config:

PasswordAuthentication no
ChallengeResponseAuthentication no

Komentarze w sshd_configzalecają również dodanie następującego wiersza:

UsePAM no
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.