Come utilizzare le chiavi SSH e disabilitare l'autenticazione della password

9

Sto provando ad accedere a un Mac da remoto (ho accesso fisico a questo Mac) tramite SSH da un computer client Linux. Il mio obiettivo è accedere a questo Mac dall'esterno della rete. Il port forwarding è impostato sul router. Dal mio computer client sono in grado di ssh user@ip per l'IP pubblico e sono in grado di accedere al Mac, quindi il port forwarding funziona.

Ora voglio impostare le chiavi SSH. Ho generato chiavi SSH sul mio computer client, ma volevo ottenere il daemon SSH sul setup del Mac prima. Ho modificato /etc/ssh_config e impostato PasswordAuthentication no . Ho riavviato SSH con questi comandi: sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist , quindi sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist . Quando tento di accedere nuovamente a SSH dal client, richiede comunque la mia password.

Ho dato un'occhiata a questo post e dalla risposta Ho aggiunto UsePAM no al file di configurazione e riavviato il servizio con launchctl di nuovo. Mi viene comunque richiesta una password.

Ho anche provato la soluzione qui . Mi viene comunque richiesta una password.

Come faccio a impostare il mio ssh_config in modo che non chieda la password e accetti solo le chiavi SSH? Non sto riavviando il demone correttamente? C'è un altro passo che mi manca?

    
posta beznez 27.01.2016 - 19:38
fonte

2 risposte

10

Stavo modificando il file di configurazione sbagliato! Invece di /etc/ssh_config , ho modificato private/etc/sshd_config . Penso che probabilmente avrebbe funzionato anche se avessi modificato /etc/sshd_config come da risposta aggiornata di @GhostLyrics, ma non l'ho ancora testato, quindi non posso dirlo con certezza. Successivamente, ho riavviato il servizio con sudo launchctl stop com.openssh.sshd e poi sudo launchctl start com.openssh.sshd e sono riuscito a ottenere il comportamento desiderato. Ecco la risorsa in cui ho trovato le informazioni pertinenti: link

Ecco le opzioni di configurazione che ho modificato:

PermitRootLogin no PasswordAuthentication no PermitEmptyPasswords no ChallengeResponseAuthentication no

Dopo che sono riuscito a generare chiavi SSH sul mio computer client, ho spostato la chiave pubblica in ~/.ssh/authorized_keys su Mac e ho impostato le autorizzazioni per quel file a 644.

È importante notare che tali autorizzazioni riguardano la mia chiave pubblica . Le mie autorizzazioni chiave privata sono impostate su 600 sul mio computer client. Questo è veramente importante se hai la tua chiave pubblica e privata nella tua cartella ~/.ssh e ci sono più utenti nel sistema. Se le tue chiavi private sono impostate su 644, allora qualsiasi utente potrebbe leggere la tua chiave privata e impersonarti. Inoltre, le autorizzazioni per la cartella ~/.ssh devono essere 700.

    
risposta data 28.01.2016 - 20:07
fonte
4

/etc/ssh/ssh_config è il file di configurazione per il client che viene utilizzato se non ne hai uno più specifico nella tua home directory. Quello che vuoi modificare è /etc/ssh/sshd_config , che è quello per il server.

Probabilmente vorrai impostare PermitRootLogin without-password (o no ) e PasswordAuthentication no lì.

Aggiornamento: Poiché esegui Yosemite, il file è /etc/sshd_config in base a questa risposta: link

Per approfondire ulteriormente il motivo per cui richiede ancora quando si imposta PasswordAuthentication no in /etc/ssh/ssh_config è importante capire cosa è stato configurato. "Quando si effettua una connessione in uscita tramite SSH, non offrire l'autenticazione della password."

    
risposta data 27.01.2016 - 19:50
fonte

Leggi altre domande sui tag