it-swarm-eu.dev

Impossibile negoziare con XX.XXX.XX.XX: non è stato trovato alcun tipo di chiave Host corrispondente. La loro offerta: ssh-dss

Sto cercando di creare un repository git sul mio web host e clonarlo sul mio computer. Ecco cosa ho fatto:

  1. Ho creato un repository sul server remoto.
  2. Ho generato una coppia di chiavi: ssh-keygen -t dsa.
  3. Ho aggiunto la mia chiave a ssh-agent.
  4. Ho copiato la chiave pubblica del server in ~/.ssh.

E poi, dopo un tentativo di eseguire il comando git clone ssh://[email protected]/path-to-repository, ottengo un errore:

Impossibile negoziare con XX.XXX.XX.XX: non è stato trovato alcun tipo di chiave Host corrispondente. La loro offerta: ssh-dss
fatale: impossibile leggere dal repository remoto.
Assicurati di disporre dei diritti di accesso corretti e del repository esistente.

Cosa significa?

106
Nikita Gorshkov

La recente versione di openssh ha deprecato le chiavi DSA per impostazione predefinita. Dovresti suggerire al tuo fornitore GIT di aggiungere qualche ragionevole chiave Host. Affidarsi solo a DSA non è una buona idea.

Per ovviare al problema, è necessario comunicare al client ssh che si desidera accettare le chiavi dell'host DSA, come descritto nella documentazione ufficiale per l'utilizzo legacy . Hai poche possibilità, ma ti consiglio di aggiungere queste righe nel tuo file ~/.ssh/config:

Host your-remote-Host
    HostkeyAlgorithms +ssh-dss

Un'altra possibilità è usare la variabile d'ambiente GIT_SSH per specificare queste opzioni:

GIT_SSH_COMMAND="ssh -oHostKeyAlgorithms=+ssh-dss" git clone ssh://[email protected]/path-to-repository
167
Jakuje

Puoi anche aggiungere -oHostKeyAlgorithms=+ssh-dss nella tua linea ssh:

ssh -oHostKeyAlgorithms=+ssh-dss [email protected]
73
Guillaume

Per me questo ha funzionato: (aggiunto in .ssh\config)

Host *
HostkeyAlgorithms +ssh-dss
PubkeyAcceptedKeyTypes +ssh-dss
17
user2885534

Se sei come me, e preferiresti non creare questo sistema di sicurezza o l'intero livello utente, allora puoi aggiungere un'opzione di configurazione a qualsiasi repository git che necessiti di questo eseguendo questo comando in quei repository. (nota funziona solo con git version> = 2.10, rilasciato il 2016-09-04)

git config core.sshCommand 'ssh -oHostKeyAlgorithms=+ssh-dss'

Funziona solo dopo che il repository è stato configurato. Se non ti senti a tuo agio ad aggiungere un telecomando manualmente (e solo a clonare), puoi eseguire il clone in questo modo:

GIT_SSH_COMMAND='ssh -oHostKeyAlgorithms=+ssh-dss' git clone ssh://[email protected]/path-to-repository

quindi esegui il primo comando per renderlo permanente.

Se non si dispone dell'ultima versione e si desidera comunque mantenere il buco il più possibile locale, consiglio di inserire

export GIT_SSH_COMMAND='ssh -oHostKeyAlgorithms=+ssh-dss'

in un file da qualche parte, dite git_ssh_allow_dsa_keys.sh e sourceing quando necessario.

8
golvok

Voglio collaborare un po 'con la soluzione per il lato server. Quindi, il server sta dicendo che non supporta DSA, questo perché il client openssh non lo attiva di default :

OpenSSH 7.0 e simili disabilitano l'algoritmo della chiave pubblica ssh-dss (DSA). Anche questo è debole e raccomandiamo contro il suo uso.

Quindi, per risolvere questo problema sul lato server, dovrei attivare altri algoritmi chiave come RSA o ECDSA. Ho appena avuto questo problema con un server in una lan. Suggerisco quanto segue:

Aggiorna il openssh:

yum update openssh-server

Unisci nuove configurazioni in sshd_config se è presente sshd_config.rpmnew.

Verificare che ci siano chiavi host in/etc/ssh /. Se non ne generi di nuovi, vedi man ssh-keygen.

$ ll /etc/ssh/
total 580
-rw-r--r--. 1 root root     553185 Mar  3  2017 moduli
-rw-r--r--. 1 root root       1874 Mar  3  2017 ssh_config
drwxr-xr-x. 2 root root       4096 Apr 17 17:56 ssh_config.d
-rw-------. 1 root root       3887 Mar  3  2017 sshd_config
-rw-r-----. 1 root ssh_keys    227 Aug 30 15:33 ssh_Host_ecdsa_key
-rw-r--r--. 1 root root        162 Aug 30 15:33 ssh_Host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys    387 Aug 30 15:33 ssh_Host_ed25519_key
-rw-r--r--. 1 root root         82 Aug 30 15:33 ssh_Host_ed25519_key.pub
-rw-r-----. 1 root ssh_keys   1675 Aug 30 15:33 ssh_Host_rsa_key
-rw-r--r--. 1 root root        382 Aug 30 15:33 ssh_Host_rsa_key.pub

Verificare in/etc/ssh/sshd_config la configurazione di HostKey. Dovrebbe consentire la configurazione di RSA e ECDSA. (Se tutti sono commentati per impostazione predefinita, consentirà anche la RSA, vedere in man sshd_config la parte di HostKey).

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_Host_key
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_Host_rsa_key
#HostKey /etc/ssh/ssh_Host_dsa_key
HostKey /etc/ssh/ssh_Host_ecdsa_key
HostKey /etc/ssh/ssh_Host_ed25519_key

Per il lato client, crea una chiave per ssh (non un DSA come nella domanda) semplicemente facendo questo:

ssh-keygen

Dopo questo, poiché ci sono più opzioni di ssh-dss (DSA) il client openssh (> = v7) dovrebbe connettersi con RSA o algoritmo migliore.

Ecco un altro buon articolo.

Questa è la mia prima domanda, mi piacciono i suggerimenti: D.

2
Gus Calca