Domanda Come posso configurare l'accesso SSH senza password?


Voglio essere in grado di accedere a un remoto tramite ssh senza dover inserire la password tutto il tempo.

  • Come lo installo?
  • È richiesto un comando diverso per eseguire una sessione senza password?

226
2018-06-04 17:24


origine


Stai usando openssh? (se è così facile;)) - Rinzwind
@Rinzwind, Perché dovrei preoccuparmi di ottenere la versione proprietaria quando OpenSSH è già preinstallato? - Oxwivi
Cerco di non fare asserzioni;) - Rinzwind
Si noti che questo è considerato una pratica di scarsa sicurezza e alcune distribuzioni lo disabilitano immediatamente. Non sono sicuro, ma è possibile che tu debba abilitare PermitRootLogin in /etc/ssh/sshd_config per far funzionare questo - Kevin
@ Kevin, per favore chiariscimi. Stiamo parlando di ssh-ing senza password, che è generalmente a buona pratica. Intendi ssh-ing in una shell di root? Questo non è coperto da questa domanda. - Oxwivi


risposte:


Risposta

Esegui questi comandi:

ssh-keygen

Quindi dovrai copiare la nuova chiave sul tuo server:

ssh-copy-id user@host
## or if your server uses custom port no:
ssh-copy-id "user@host -p 1234"

Dopo che la chiave è stata copiata, ssh nella macchina normalmente:

ssh user@host

Ora puoi effettuare il login senza inserire una password dal particolare computer su cui hai eseguito i comandi.

Esempio

not-marco@rinzwind-desktop:~$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/not-marco/.ssh/id_rsa): 
Created directory '/home/not-marco/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/not-marco/.ssh/id_rsa.
Your public key has been saved in /home/not-marco/.ssh/id_rsa.pub.
The key fingerprint is:
b1:25:04:21:1a:38:73:38:3c:e9:e4:5b:81:e9:ac:0f not-marco@rinzwind-desktop
The key's randomart image is:
+--[ RSA 2048]----+
|.o= . oo.        |
|*B.+ . .         |
|*=o .   o .      |
| = .     =       |
|. o     S        |
|E.               |
| o               |
|  .              |
|                 |
+-----------------+

not-marco@rinzwind-desktop:~$ ssh-copy-id not-marco@server
not-marco@server's password: 
Now try logging into the machine, with "ssh 'not-marco@server'", and check in:

  ~/.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Spiegazione

Questo presuppone che tu possa già connettersi al tuo server tramite SSH.

Dovrai generare un Keypair SSH che ti permetta di identificarti come te stesso senza usare una password. Se lo desideri, puoi scegliere di proteggere le chiavi con un passcode, ma questo può essere lasciato vuoto consentendo un accesso SSH totalmente privo di password.

  1. Per prima cosa crea il tuo SSH Keypair eseguendo ssh-keygen questo creerà un id_rsa e id_rsa.pub file. Il pub il file è ciò che accade sui server, la chiave privata (id_rsa) è ciò che rimane con te ed è il modo in cui ti identifichi.
  2. Quindi copia la chiave pubblica sul tuo server con ssh-copy-id user@server sostituzione dell'utente con il tuo utente e server remoto con il nome DNS della macchina o l'indirizzo IP. Richiederà la tua password SSH, la inserirà e se tutto va a buon fine sarai in grado di accedere alla macchina tramite ssh user@server senza bisogno di una password.

Riferimenti


231
2018-06-04 17:36



@Oxwivi questa risposta è il modo più corretto per farlo - ma sembra più lungo. Tutto quello che devi fare è digitare ssh-keygen seguire le istruzioni sullo schermo, quindi digitare ssh-copy-id user@server sostituendo l'utente con l'utente remoto e il server con la macchina remota - Marco Ceppi♦
Ho avuto questo errore "L'agente ha ammesso l'impossibilità di firmare utilizzando la chiave". ogni volta quando si tenta di accedere dopo aver seguito questa procedura. La soluzione era eseguire "> ssh-add" sul computer locale e ora posso accedere al computer remoto come previsto. - jmbouffard
Vale la pena ricordare che se è necessario utilizzare la porta personalizzata per @server, è necessario farlo con: ssh-copy-id "not-marco@127.0.0.1 -p 1234". - s3m3n
@Rinzwind: Questo significa che non posso mai autenticarmi da un client / macchina sconosciuto sul mio server se disabilito l'autenticazione passwd e permetto solo l'autenticazione della chiave. Esiste un modo per consentire l'accesso da una macchina sconosciuta utilizzando la chiave privata che è stata generata per il client noto / configurato per comunicare al server? Voglio dire, questa chiave privata è portatile e potrebbe essere utilizzata per autenticarmi al server di altre macchine, in caso di necessità di emergenza? - Rajat Gupta
Ma il server sta ancora chiedendo la password ,,, - lerner


Digita i seguenti comandi:

  1. ssh-keygen 

    stampa accedere tasto finché non si ottiene il prompt

  2. ssh-copy-id -i root@ip_address

    (Richiederà una volta la password del sistema host)

  3. ssh root@ip_address

Ora dovresti essere in grado di accedere senza alcuna password.


30
2018-05-17 08:45





Il modo in cui faccio questo è il seguente:

ssh-keygen -t rsa

(Quando viene richiesta una password, lasciala vuota)

Poi: cat ~/.ssh/id_rsa.pub | ssh username@hostname 'cat >> .ssh/authorized_keys'

(Ciò richiede che la cartella .ssh sia nella directory home sul nome host di destinazione, con il file authorized_keys in esso)

Ovviamente, sostituire il nome utente con il nome utente desiderato e il nome host con il nome host o l'indirizzo IP desiderato

Dopo di ciò, solo SSH in quella casella, proprio come sei abituato.


21
2018-06-04 18:22



Cosa ne pensi riguardo a touch e chmod comando nella risposta di Rinzwind? - Oxwivi
Avrai bisogno di chmod il .ssh/authorized_keys file a 0600 o questo non funzionerà - Marco Ceppi♦
Questo mi è stato di grande aiuto perché non riuscivo a far funzionare ssh-copy-id per root sul mio server. deve essere root nella situazione in cui backuppc (o qualsiasi altro daemon) ha bisogno di ssh su un'altra macchina. - Adam


Io normalmente uso sshpass per questo, installalo con sudo apt-get install sshpass e usalo in questo modo

sshpass -p 'password' ssh your_username@your_server

18
2017-12-06 17:26



Perché non usare le chiavi ssh? - enzotib
Non è una situazione "perché no", funziona ancora perfettamente senza aggiungere chiavi, è solo un altro metodo che vorrei dire. - Bruno Pereira
Grazie per le informazioni su sshpass, mai sentito prima. - Panther
Le chiavi SSH sono la risposta "corretta" alla domanda, ma sshpass è un trucco molto utile nei casi in cui non è possibile modificare il metodo di autenticazione sul server remoto! - Jacob Krall
Questo è molto pericoloso, ti manterrai in bash_history o in qualsiasi altra password per gli host a cui ti stai connettendo. - kappa


Questa soluzione è specifica per gli utenti che utilizzano finestre a SSH nelle loro macchine remote incluse le immagini del cloud AWS Cloud e GCE Cloud


9
2017-11-20 09:07





Disabilitare l'autenticazione della password

Perché molte persone con server SSH usano password deboli, molte   gli attaccanti online cercheranno un server SSH, quindi inizieranno a indovinare   password a caso. Un utente malintenzionato può provare migliaia di password in un   ora, e indovina anche la password più forte data abbastanza tempo. Il   la soluzione consigliata è usare le chiavi SSH invece delle password. Essere come   difficile da indovinare come una normale chiave SSH, una password dovrebbe contenere   634 lettere e numeri casuali. Se sarai sempre in grado di accedere a   il tuo computer con una chiave SSH, dovresti disabilitare la password   autenticazione del tutto.

Se si disabilita l'autenticazione della password, sarà possibile solo   connettersi dai computer che hai specificamente approvato. Questo in maniera massiccia   migliora la tua sicurezza, ma ti rende impossibile collegarti   il tuo computer dal PC di un amico senza pre-approvazione del PC, o   dal tuo portatile quando cancelli accidentalmente la tua chiave.

Si consiglia di disabilitare l'autenticazione della password a meno che non si disponga di un   motivo specifico per non farlo.

Per disabilitare l'autenticazione della password, cerca la seguente riga in   il tuo file sshd_config:

#PasswordAuthentication yes

sostituirlo con una linea simile a questa:

PasswordAuthentication no

Dopo aver salvato il file e riavviato il server SSH, tu   non dovrebbe nemmeno essere richiesta una password quando si accede.

https://help.ubuntu.com/community/SSH/OpenSSH/Configuring#disable-password-authentication


7
2018-02-15 01:10



Questa è la risposta corretta più semplice, ma utile per la sicurezza! Anche disabilitare il login di root è un altro buon esempio - FreeSoftwareServers
fa PasswordAuthentication no interessa tutti gli utenti? In caso contrario, come posso disattivarlo per gli utenti normali, ma lasciarlo invariato per root mentre lo sto testando? Non voglio davvero fuggire da esso e chiudermi completamente. - Adam
Mantieni aperta una sessione SSH per poterla modificare. Vuoi disabilitare le password AND root. Sì, puoi farcela. Non farlo;) - Thufir
Durante ssh, ho un errore Permission denied (publickey). con PasswordAuthentication no. Cosa dovrei fare? Cambio? PasswordAuthentication no su un altro host? - ParisaN


Se crei una coppia di chiavi pubblica / pregna e accedi utilizzando la nostra nuova chiave pubblica appena creata, non dovrai digitare la tua password. A seconda della configurazione del portachiavi e / o dell'agente ssh, potrebbe essere necessario proteggere la chiave con una passphrase.

Ecco uno dei tanti breve howtos per te. È di fondamentale importanza per la sicurezza di questo metodo, che la chiave privata generata rimanga privata! Non dovresti mai condividerlo con nessuno o permetterne l'accesso a qualsiasi titolo.

Questo comando genera una chiave ragionevolmente forte in ~/.ssh/:

ssh-keygen -b 4096

In ~/.ssh/ troverai la tua chiave pubblica come id_rsa.pub. Il suo contenuto dovrebbe essere aggiunto ai tuoi server authorized_keys file trasportando tramite un supporto portatile (pen drive) o abilitando brevemente l'autenticazione tramite password sul server, quindi utilizzando ssh-copy-id ~/.ssh/id_rsa.pub username@server e quindi disabilitarlo di nuovo.

Se si è scelto di proteggere la chiave con una passphrase (nel primo passaggio), è possibile utilizzare ssh-agent o il portachiavi di Ubuntu per proteggere quel pharse localmente in modo da non doverlo digitare tutto il tempo.


4
2018-06-04 17:32