Perché sto ancora ricevendo una richiesta di password con ssh con autenticazione con chiave pubblica?


470

Sto lavorando dall'URL che ho trovato qui:

http://web.archive.org/web/20160404025901/http://jaybyjayfresh.com/2009/02/04/logging-in-without-a-password-certificates-ssh/

Il mio client ssh è desktop Ubuntu 64 bit 11.10 e il mio server è Centos 6.2 64 bit. Ho seguito le indicazioni. Ricevo ancora una richiesta di password su ssh.

Non sono sicuro di cosa fare dopo.


5
output dal comando che stai dando a ssh con il flag -v? dovrebbe essere simile a questo pastebin.com/xxe57kxg
Rob

14
assicurati anche che la tua cartella .ssh siachmod 700
Rob

8
supponendo che tu abbia l'accesso root al server, /var/log/auth.logti dirà perché l'accesso non riesce.
UtahJarhead,

5
@UtahJarhead: sul server CentOS, è probabile che ci sia /var/log/secure.
Dennis Williamson,

3
Interessante, il chmod 0700era la risposta, ma quando l'ho fatto ssh -vsul lato client non ha indicato un errore relativo al motivo per cui la chiave non è stata accettata, ha solo detto che stava provando la password successiva anche se il mio client ha inviato una chiave pubblica. Come si aspettano che diagnostichiamo i problemi senza informazioni di errore dal server?
void.pointer

Risposte:


557

Assicurarsi che le autorizzazioni per la ~/.sshdirectory e il suo contenuto siano corrette. Quando ho impostato per la prima volta la mia chiave di autenticazione ssh, non avevo la ~/.sshcartella impostata correttamente e mi ha urlato contro.

  • La tua home directory ~, la tua ~/.sshdirectory e il ~/.ssh/authorized_keysfile sul computer remoto devono essere scrivibili solo da te: rwx------e rwxr-xr-xvanno bene, ma rwxrwx---non vanno bene¹, anche se sei l'unico utente del tuo gruppo (se preferisci le modalità numeriche: 700oppure 755no 775) .
    Se ~/.ssho authorized_keysè un collegamento simbolico, viene controllato il percorso canonico (con collegamenti simbolici espansi) .
  • Il ~/.ssh/authorized_keysfile (sul computer remoto) deve essere leggibile (almeno 400), ma sarà necessario che sia anche scrivibile (600) se si aggiungono ulteriori chiavi.
  • Il tuo file di chiave privata (sul computer locale) deve essere leggibile e scrivibile solo da te: ad rw-------es 600.
  • Inoltre, se SELinux è impostato per l'applicazione, potrebbe essere necessario eseguire restorecon -R -v ~/.ssh(vedere ad es. Bug Ubuntu 965663 e segnalazione bug Debian # 658675 ; questo è corretto in CentOS 6 ).

¹ Tranne alcune distribuzioni (Debian e derivati) che hanno corretto il codice per consentire la scrivibilità del gruppo se sei l'unico utente del tuo gruppo.


29
Grazie mille per aver sottolineato restorecon. Mi sto grattando la testa proprio per questo problema da un po 'di tempo.
Richard Barrell,

19
Stranamente, ho avuto problemi con un account creato da un amico sul suo VPS per far funzionare l'autenticazione di pubkey. Ho pensato che tutte le autorizzazioni fossero corrette, ma è importante ricordare che /home/USERdeve essere 700o755
Rob

2
Ricorda anche di controllare le impostazioni del proprietario e del gruppo, ho usato RSYNC per copiare su un file authorized_keys e non ho notato che il proprietario / gruppo era impostato su 1000 anziché su root!
nak,

11
inoltre, aggiungi -v al tuo comando ssh per vedere cosa succede con quella chiave. ssh -v user@host.
Tedder42,

14
chmod -R 700 ~/.sshha lavorato per me per soddisfare i vincoli di questa risposta (RHEL 7)
scottyseus

147

Se si dispone dell'accesso root al server, il modo più semplice per risolvere tali problemi è eseguire sshd in modalità debug, emettendo qualcosa di simile /usr/sbin/sshd -d -p 2222sul server (è necessario il percorso completo dell'eseguibile sshd, which sshdpuò aiutare) e quindi connettersi dal client con ssh -p 2222 user@host. Ciò costringerà il demone SSH a rimanere in primo piano e visualizzare le informazioni di debug su ogni connessione. Cerca qualcosa di simile

debug1: trying public key file /path/to/home/.ssh/authorized_keys
...
Authentication refused: bad ownership or modes for directory /path/to/home/

Se non è possibile utilizzare una porta alternativa, è possibile arrestare temporaneamente il demone SSH e sostituirlo con uno in modalità debug. L'arresto del demone SSH non interrompe le connessioni esistenti, quindi è possibile farlo tramite un terminale remoto, ma in qualche modo rischioso - se la connessione si interrompe in qualche modo in un momento in cui la sostituzione del debug non è in esecuzione, si viene bloccati dalla macchina fino a quando non è possibile riavviarlo. I comandi richiesti:

service ssh stop
/usr/sbin/sshd -d
#...debug output...
service ssh start

(A seconda della distribuzione Linux, la prima / ultima riga potrebbe essere systemctl stop sshd.service/ systemctl start sshd.serviceinvece.)


5
Ho appena provato questo ... e funziona benissimo quando sshd -dcorro, ma fallisco una volta che corro effettivamente service sshd start. Sono sicuro che sia semplice, ma non sono un guru di Linux. qualche idea?
N Rohler,

3
Per riferimento, questo post spiega la soluzione SELinux che ha risolto il mio problema.
N Rohler,

2
Ho anche avuto problemi con il funzionamento dell'autenticazione con chiave pubblica ed ero abbastanza sicuro che i permessi delle directory non fossero il problema. Dopo aver eseguito SSH in modalità debug, ho scoperto rapidamente che avevo torto e che i problemi erano le autorizzazioni.
ub3rst4r,

3
Ottimo consiglio, la mia cartella utente aveva le autorizzazioni sbagliate.
gdfbarbosa,

2
Grazie. Di tutti i motivi, il mio utente non è stato autorizzato ad accedere perché la shell specificata da ansible (/ bin / zsh) durante la creazione dell'utente non esisteva. Non lo avrei mai immaginato.
Chishaku,

53

La tua home directory è crittografata? In tal caso, per la tua prima sessione SSH dovrai fornire una password. La seconda sessione ssh sullo stesso server funziona con la chiave di autenticazione. In questo caso, potresti spostare il tuo authorized_keysin una directory non crittografata e modificare il percorso in ~/.ssh/config.

Quello che ho finito per fare è stato creare una /etc/ssh/usernamecartella, di proprietà del nome utente, con le autorizzazioni corrette e inserito il authorized_keysfile. Quindi modificato la direttiva AuthorizedKeysFile in /etc/ssh/config:

AuthorizedKeysFile    /etc/ssh/%u/authorized_keys

Ciò consente a più utenti di avere questo accesso ssh senza compromettere le autorizzazioni.



3
Questa risposta è saliente e mi ha aiutato - per chiunque si chiedesse se questo fosse il problema - potresti vedere "pam_ecryptfs: file Passphrase spostato" nel tuo auth.log; in qualche modo non era abbastanza per indurmi a ricordare che l'omedir era crittografato. Inoltre, è possibile che il primo accesso richieda una password, le sessioni successive no (poiché viene decrittografato mentre le altre sessioni sono aperte).
pacifista,

Santa merda, ho cercato Wayyyy a lungo per risolvere il problema, grazie tanto!
h3.

33

Dopo aver copiato le chiavi sul computer remoto e averle inserite all'interno, authorized_keysdevi fare qualcosa del genere:

ssh-agent bash
ssh-add ~/.ssh/id_dsa or id_rsa

1
In realtà no, non lo fai. ssh usa automaticamente ~ / .ssh / id_rsa (o id_dsa) senza dover usare un key agent.
Patrick,

7
Questo può ancora essere utile consiglio se si dovesse specificare una chiave con un nome diverso in ~ / .ssh / config (ad es. Sull'host * .mydomain.org ... IdentityFile ~ / .ssh / some_limited_use.pub - ssh-add ~ / .ssh / some_limited_use.pub).
89c3b1b8-b1ae-11e6-b842-48d705

Questo ha risolto il mio problema con la richiesta della password dopo aver aggiunto una chiave. Come sottolineato da 89c3b1b8-b1ae-11e6-b842-48d705, il motivo per eseguire manualmente questi comandi era un nome non standard di un file chiave.
Михаил Лисаков,

Come indicato sopra nei commenti, se si utilizza una chiave diversa dalla chiave predefinita, non viene aggiunta per impostazione predefinita all'agente ssh. Quindi assicurati di controllare che la chiave che vuoi usare sia nel portachiavi dell'agente:ssh-add -L
James

30

Prova questi seguenti comandi

  1. ssh-keygen

    Premere il tasto Invio fino a quando non viene visualizzato il messaggio

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

    (Chiederà una volta la password del sistema host)

  3. ssh root@ip_address

    Ora dovresti essere in grado di accedere senza alcuna password


1
Su quale server?
Amalgovinus,

@Amalgovinus Ovviamente esegui questo sul client, non sul computer a cui ti stai connettendo: non vuoi una copia della tua chiave privata sul server! :)
nevelis,

4
In genere, consentire l'accesso remoto remoto non è una pratica di sicurezza consigliata.
arielf

27

Ho affrontato sfide quando la home directory sul telecomando non ha i privilegi corretti. Nel mio caso l'utente ha cambiato la home directory in 777 per un accesso locale con nel team. La macchina non è più riuscita a connettersi con i tasti SSH. Ho cambiato il permesso in 744 e ha ricominciato a funzionare.


7
Abbiamo avuto anche questo problema - 755 su
Dirs

Avevo le autorizzazioni impostate su 777 ed è stato ignorato, grazie !!!
ka_lin,

Anch'io. Grazie. Mi grattava la testa da un po ', ma stava succedendo.
Marcin,

Sì, vedi la risposta qui per ulteriori dettagli unix.stackexchange.com/questions/205842/…
Tim

Questa potrebbe essere la risposta per le persone che hanno eseguito correttamente la generazione della chiave ma che continuano a ricevere una password.
Fergie il

14

SELinux su RedHat / CentOS 6 ha un problema con l'autenticazione pubkey , probabilmente quando vengono creati alcuni file selinux non sta impostando correttamente i propri ACL.

Per correggere manualmente gli ACL di SElinux per l'utente root:

restorecon -R -v /root/.ssh

usando il client openssh su Windows sono stato in grado di ssh root@mymachineaccedere a un CentOS6 mymachinesenza problemi, ma ho un utente con privilegi inferiori che preferirei usare, ma ssh regularUser@mymachinemi chiede ancora una password. pensieri?
Groostav,

13

Abbiamo riscontrato lo stesso problema e abbiamo seguito i passaggi nella risposta. Ma non ha ancora funzionato per noi. Il nostro problema era che il login funzionava da un client ma non da un altro (la directory .ssh era montata su NFS ed entrambi i client utilizzavano le stesse chiavi).

Quindi abbiamo dovuto fare un ulteriore passo avanti. Eseguendo il comando ssh in modalità dettagliata si ottengono molte informazioni.

ssh -vv user@host

Ciò che abbiamo scoperto è che la chiave predefinita (id_rsa) non è stata accettata e invece il client ssh ha offerto una chiave corrispondente al nome host del client:

debug1: Offering public key: /home/user/.ssh/id_rsa                                    
debug2: we sent a publickey packet, wait for reply                                        
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Offering public key: /home/user/.ssh/id_dsa                                    
debug2: we sent a publickey packet, wait for reply                                        
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Offering public key: user@myclient                                          
debug2: we sent a publickey packet, wait for reply                                        
debug1: Server accepts key: pkalg ssh-rsa blen 277                  

Ovviamente questo non funzionerà da nessun altro client.

Quindi la soluzione nel nostro caso era quella di passare la chiave rsa predefinita a quella che conteneva user @ myclient. Quando una chiave è predefinita, non è possibile verificare il nome del client.

Quindi abbiamo riscontrato un altro problema, dopo il passaggio. Apparentemente le chiavi sono memorizzate nella cache nell'agente ssh locale e abbiamo ottenuto il seguente errore nel registro di debug:

'Agent admitted failure to sign using the key'

Ciò è stato risolto ricaricando le chiavi dell'agente ssh:

ssh-add

9

Sarebbe SSH Miss Configuration alla fine del server. Il file sshd_config lato server deve essere modificato. Situato in /etc/ssh/sshd_config. In quel file, cambia le variabili

  • da "sì" a "no" per ChallengeResponseAuthentication, PasswordAuthentication, UsePAM

  • 'no' a 'yes' per PubkeyAuthentication

Basato su http://kaotickreation.com/2008/05/21/disable-ssh-password-authentication-for-added-security/


1
Come nei commenti alla domanda, controlla / var / log / secure o /var/log/auth.log. Nel mio caso vedo "Utente xxx da xxx non consentito perché non elencato in AllowUsers" "input_userauth_request: utente non valido xxx [preauth]" (e "rexec line 35: opzione obsoleta ServerKeyBits" in / var / log / messaggi anche se non so cosa questo è). Per risolvere vi /etc/ssh/sshd_config, aggiungi l'utente xxx all'elenco AllowUsers, service sshd restart*** ATTENZIONE, riavviare il servizio sshd con un errore sshd_config potrebbe bloccarti fuori da una scatola !? ***. Ha funzionato
Gaoithe

6

Assicurati che AuthorizedKeysFilepunti nella posizione corretta, utilizza %ucome segnaposto per il nome utente:

# /etc/ssh/sshd_config
AuthorizedKeysFile /home/%u/authorized_keys

Potrebbe essere che devi solo decommentare la linea:

AuthorizedKeysFile .ssh / authorized_keys

Ricorda che è necessario ricaricare il servizio ssh affinché le modifiche abbiano luogo:

service sshd reload

4

Due commenti: questo sovrascriverà il file originale. Vorrei solo copiare la chiave pubblica generata e fare qualcosa del tipo:

cat your_public_key.pub >> .ssh/authorized_keys

Ciò aggiungerà la chiave che si desidera utilizzare all'elenco di chiavi preesistente. Inoltre, alcuni sistemi utilizzano il file authorized_keys2, quindi è una buona idea creare un collegamento rigido che punti tra authorized_keyse authorized_keys2, per ogni evenienza.


Sì, l'ho notato anche per la sovrascrittura, ma non ne avevo, quindi non importava. Ho creato un collegamento simbolico a authorized_keys2 ma non mi è stato di aiuto.
Thom,

Inoltre, controlla le autorizzazioni per file / directory. Sono descritti sul sito Web che hai fornito.
Wojtek Rzepala,

3
la tua directory ~ / .ssh deve essere 700 il tuo file di chiave privata deve essere 600 il tuo file di chiave pubblica deve essere 644 il tuo file di autenticazione (sul telecomando) deve essere 644
Rob

@Rob quello era il problema. Se lo pubblicassi come risposta, lo accetterei.
Thom,

4

La mia soluzione era che l'account era bloccato. Messaggio trovato in / var / log / secure: Utente non consentito perché l'account è bloccato Soluzione: fornire all'utente una nuova password.


L'ho corretto modificando il campo password /etc/shadowper questo utente da !a *. Dopo tale password l'autenticazione è ancora impossibile, ma l'utente non è più bloccato.
user3132194

4

Ho riscontrato un problema simile e ho seguito i passaggi utilizzando la modalità debug.

/usr/sbin/sshd -d

Ciò ha mostrato il seguente risultato

debug1: trying public key file /root/.ssh/authorized_keys
debug1: fd 4 clearing O_NONBLOCK
Authentication refused: bad ownership or modes for directory /root
debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 0/0 (e=0/0)
debug1: trying public key file /root/.ssh/authorized_keys2
debug1: Could not open authorized keys '/root/.ssh/authorized_keys2': No such file or directory
debug1: restore_uid: 0/0
Failed publickey for root from 135.250.24.32 port 54553 ssh2
debug1: userauth-request for user root service ssh-connection method gssapi-with-mic

È stato davvero confuso

[root@sys-135 ~]# ls -l /
drwxrwxrwx.   2 root root     4096 Dec 14 20:05 bin
drwxrwxrwx.   5 root root     1024 May  6  2014 boot
drwxrwxrwx.   2 root root     4096 Dec  2  2013 cgroup
drwxrwxrwx.  10 root root     1024 Sep 25 23:46 data
drwxrwxrwx. 124 root root    12288 Dec 16 10:26 etc
drwxrwxrwx.  11 root root     4096 Jan 14  2014 lib
drwxrwxrwx.   9 root root    12288 Dec 14 20:05 lib64
drwxrwxrwx.   2 root root    16384 Jan 10  2014 lost+found
drwxrwxrwx.   2 root root     4096 Jun 28  2011 media
drwxr-xr-x.   2 root root        0 Dec 10 14:35 misc
drwxrwxrwx.   2 root root     4096 Jun 28  2011 mnt
drwxrwxrwx.   4 root root     4096 Nov 24 23:13 opt
dr-xr-xr-x. 580 root root        0 Dec 10 14:35 proc
drwxrwxrwx.  45 root root     4096 Dec 16 10:26 root

Ha mostrato che la directory principale aveva i permessi per ognuno. Lo abbiamo cambiato in modo che gli altri non avessero i permessi.

[root@sys-135 ~]# chmod 750 /root

L'autenticazione con chiave ha iniziato a funzionare.


Ho lo stesso problema. Ieri, ho emesso rsync -av ./root/ root@THE_HOST:/rootper caricare alcuni file dalla mia directory di lavoro locale, quindi, questo problema si verifica (in effetti, all'inizio non me ne sono accorto. Dopo che i lavori cron in altri host falliscono la mattina successiva, ho iniziato a scavare il motivo) . Il rsync -av ./root/ root@THE_HOST:/rootcomando ha modificato il proprietario e l'autorizzazione della /rootdirectory dell'host remoto. Risolto il permesso, problema risolto.
LiuYan 刘 研

Failed publickey for root from 135.250.24.32 port 54553 ssh2Ricevo lo stesso messaggio e lo stesso problema quando ho dimenticato di aggiungere il pubkey a un host authorized_keys. Aggiungendo questo commento come nel mio caso, di solito mi rendo conto del mio errore dopo aver controllato il debug e tutte le autorizzazioni più i file di configurazione #: o <
tuk0z

3

Nel file / etc / selinux / config la modifica di SELINUX in disabilitato dall'applicazione forzata ha fatto sì che ssh senza password funzionasse correttamente.

In precedenza sono in grado di farlo in un modo. Ora da entrambe le parti sono in grado di fare ssh senza password.


3

Una cosa che ho sbagliato era la proprietà sulla mia home directory sul sistema server. Il sistema server è stato impostato sul valore predefinito: default quindi I:

chown -R root:root /root

E ha funzionato. Un'altra soluzione economica è Disabilitare StrictModes: StirctModes no. in sshd_config. Questo ti dirà almeno se i protocolli di scambio delle chiavi e di connessione sono buoni. Quindi puoi andare a caccia delle autorizzazioni sbagliate.


Anch'io. Guarda i messaggi in / var / log / secure. Ho visto un messaggio: "Autenticazione rifiutata: cattiva proprietà o modalità per la directory" ($ HOME). Assicurati che non ci sia accesso in scrittura a $ HOME al gruppo o altro. Non l'avrei mai trovato se non avessi avuto l'accesso root non autorizzato al server ....
SoloPilot,

2

Per me, la soluzione era di fronte a Wojtek Rzepala : non avevo notato che stavo ancora usando authorized_keys2, che è stato deprecato . La mia configurazione ssh ha smesso di funzionare ad un certo punto, presumibilmente quando il server è stato aggiornato. Rinominare .ssh/authorized_keys2come .ssh/authorized_keysrisolto il problema.

D'oh!


Questa è anche un'opzione di configurazione in / etc / ssh / sshd_config, anche se penso che la rinominerei come hai fatto tu.
Rick Smith,

2

In passato mi sono imbattuto in alcuni tutorial che descrivono come ottenere una configurazione senza password SSH, ma alcuni sono purtroppo sbagliati.
Ricominciamo da capo e controlliamo ogni passaggio:

  1. DAL CLIENTE - Genera chiave: la chiave ssh-keygen -t rsa
    pubblica e privata ( id_rsa.pube id_rsa) verrà automaticamente memorizzata nella ~/.ssh/directory.
    L'installazione sarà più semplice se si utilizza una passphrase vuota. Se non sei disposto a farlo, segui comunque questa guida, ma controlla anche il punto seguente.

  2. DAL CLIENTE - Copia la chiave pubblica sul server : ssh-copy-id user@server
    la chiave pubblica del client verrà copiata nella posizione del server ~/.ssh/authorized_keys .

  3. DAL CLIENTE - Connetti al server:ssh user@server

Ora, se non funziona ancora dopo i 3 passaggi descritti, proviamo quanto segue:

  • Controlla le ~/sshautorizzazioni per le cartelle nel computer client e server .
  • Verificare /etc/ssh/sshd_confignel server per assicurarsi che RSAAuthentication, PubkeyAuthenticatione le UsePAMopzioni non siano disabilitate, possano essere abilitate per impostazione predefinita con yes.
  • Se hai inserito una passphrase durante la generazione della chiave del client, puoi provare ssh-agent&ssh-add ottenere connessioni senza password nella sessione.
  • Controllare i contenuti di /var/log/auth.logsul server per trovare il problema per cui l'autenticazione con chiave viene saltata affatto.

Grazie per aver elencato i passaggi! Sono arrivato a "ssh-copy-id user @ server" e mi sono reso conto che avevo originariamente copiato sulla chiave pubblica sbagliata.
mattavatar,

2

Stavo avendo lo stesso identico problema con la connessione PuTTY a una macchina Ubuntu 16.04. Era sconcertante perché il programma pscp di PuTTY funzionava bene con la stessa chiave (e la stessa chiave funzionava in PuTTY per connettersi a un altro host).

Grazie al prezioso commento di @UtahJarhead, ho controllato il mio file /var/log/auth.log e ho trovato quanto segue:

sshd[17278]: userauth_pubkey: key type ssh-dss not in PubkeyAcceptedKeyTypes [preauth]

Si scopre che le versioni più recenti di OpenSSH non accettano le chiavi DSA per impostazione predefinita. Una volta passato da un DSA a una chiave RSA, ha funzionato bene.

Un altro approccio: questa domanda discute su come configurare il server SSH per accettare le chiavi DSA: https://superuser.com/questions/1016989/ssh-dsa-keys-no-longer-work-for-password-less-authentication?lq = 1


1

Questi passaggi dovrebbero aiutarti. Lo uso regolarmente tra molte macchine Ubuntu 10.04 a 64 bit.

[ ! -f ~/.ssh/id_rsa.pub ] && ssh-keygen -t rsa;
ssh <username>@<remote_machine> 'mkdir -p ~/.ssh'
cat ~/.ssh/id_rsa.pub | ssh <username>@<remote_machine> 'cat >> ~/.ssh/authorized_keys'

potresti metterlo in uno script con alcuni prompt e invocarlo come

script_name username remote_machine

Esiste già ssh-copy-idche esegue automaticamente gli ultimi due passaggi.
jofel,

2
@jofel tieni presente che in molti sistemi ssh-copy-id non esiste. @Sriharsha dopo mkdirche dovresti aggiungere chmod 700 .sshanche lì e tra cui non devi essere così prolisso ~/.ssh, basta solo .sshperché i comandi vengono eseguiti comunque nella directory home
janos

1

Ho avuto un problema simile con ssh. Nel mio caso il problema era che ho installato hadoop cloudera (da rpm su centos 6) e ha creato hdf utente con home directory

/var/lib/hadoop-hdfs(non standard /home/hdfs).

Ho cambiato in / etc / passwd /var/lib/hadoop-hdfsin /home/hdfs, ho spostato la directory home in una nuova posizione e ora posso collegarmi con l'autenticazione con chiave pubblica.


1

Ho appena avuto questo stesso problema, e per me la soluzione è stata per impostare UsePAMa no. Vedi, anche se PasswordAuthenticationimpostato su no, otterrai comunque keyboard-interactive, e nel mio caso il mio programma ssh locale ha continuato a non farlo, per qualche motivo.

Background extra per aiutare chiunque abbia la stessa situazione: mi sto collegando da un host che esegue Dropbear a uno che esegue OpenSSH. Con PasswordAuthenticationed UsePAMentrambi impostati nosul computer remoto, se inserisco riceverò il seguente messaggio ssh user@server:

ssh: Connection to user@server:22 exited: Disconnect received

Fornendo il file di identità -i, tutto funziona come previsto.

Potrebbero esserci alcune informazioni in più qui.


1

Dopo aver controllato le autorizzazioni e provato diverse altre soluzioni elencate qui, ho finalmente rimosso la directory ssh sul server, e ho nuovamente impostato la mia chiave pubblica.

Comandi del server:

# rm -rf ~/.ssh

Comandi locali:

# ssh-copy-id user@192.168.1.1        # where <user> is your username and <192.168.1.1> is the server IP


0

Un'altra opzione è una variante del @Jagadish 's risposta : per straceil demone SSH.

Ha il vantaggio significativo, che non abbiamo bisogno di fermare la sshd, cosa può comportare un blocco completo se qualcosa va male.

Innanzitutto, troviamo il pid del processo sshd principale. Qui possiamo vederlo eseguendo un pstree -pa|less.

  |-sshd,633 -D  <-- THIS IS WHAT WE WANT!
  |   `-sshd,21973   
  |       `-sshd,21996    
  |           `-bash,22000
  |               `-screen,638 -r

Dopo aver saputo che il pid è 633, possiamo stracefarlo, seguendo i suoi figli:

strace -p 633 -s 4096 -f -o sux

Il risultato sarà che tutto ciò che questo sshd, e i suoi processi figli hanno fatto, saranno inseriti nel file indicato suxnella directory locale.

Quindi riprodurre il problema.

Avrà un enorme elenco di log delle chiamate del kernel, che è per lo più incomprensibile / irrilevante per noi, ma non ovunque. Nel mio caso, l'importante era questo:

6834  sendto(4, "<38>Jan 15 18:49:21 sshd[6834]: User cica not allowed because account is locked\0", 84, MSG_NOSIGNAL, NULL, 0) = 84

Significava che sshd ha tentato di registrare il messaggio User cica non consentito perché l'account è bloccato - non è stato possibile, perché la registrazione non è abbastanza dettagliata per questo. Ma sappiamo già, il pubkey è stato rifiutato perché l'account era bloccato.

Non è ancora una soluzione - ora abbiamo bisogno di google, che significa un "account bloccato" nel caso di sshd. Molto probabilmente sarà un po 'di magia, banale /etc/passwd, /etc/shadowma la cosa importante è fatta: il problema non è misterioso, ma facilmente debuggabile / googlabile.


0

Nel mio caso avevo tutte le autorizzazioni giuste e anche quando eseguivo ssh con -vvv flag non riuscivo a capire quale fosse il problema.

Quindi ho generato un nuovo certificato sull'host remoto

ssh-keygen -t rsa -C "your_email@example.com"

e ha copiato le chiavi generate sul computer locale e ha aggiunto una nuova chiave pubblica a ~ / .ssh / authorized_keys sull'host remoto

cat id_rsa.pub >> authorized_keys

L'uso delle chiavi generate dalla connessione della macchina host remota ora funziona. Quindi, se altre soluzioni falliscono, questa è un'altra cosa da provare.


0

Il mio scenario era che avevo un server NAS su cui ho creato un backupbotutente, dopo la creazione del mio account principale, che era in grado di accedere per creare inizialmente l' backupbotutente. Dopo aver armeggiato sudo vim /etc/ssh/sshd_confige creato l' backupbotutente, vimpuoi creare, almeno su Ubuntu 16.04 e in base alla tua ~/.vimrcconfigurazione, un file di scambio lasciato dalla modifica della tua sessione vim di/etc/ssh/sshd_config .

Controlla se: /etc/ssh/.sshd_config.swpesiste e se lo rimuove e riavvia il sshddemone:

$ sudo rm /etc/ssh/.sshd_config.swp
$ sudo service sshd restart

Questo ha magicamente risolto il mio problema. In precedenza avevo controllato tutte le mie autorizzazioni e persino le impronte digitali RSA delle chiavi pubbliche e private. Questo è strano e probabilmente un bug con sshd, in particolare questa versione:

OpenSSH_7.4p1 Ubuntu-10, OpenSSL 1.0.2g 1 marzo 2016

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.