unlimited - No se puede negociar con XX.XXX.XX.XX: no se encontró ningún tipo de clave de host coincidente. Su oferta: ssh-dss
ssh unlimited (6)
La versión reciente de openssh desaprobó las claves DSA de forma predeterminada. Debería sugerirle a su proveedor de GIT que agregue alguna clave de host razonable. Confiar solo en DSA no es una buena idea.
Como solución alternativa, debe decirle a su cliente
ssh
que desea aceptar las claves de host DSA, como se describe en la
documentación oficial para el uso heredado
.
Tiene pocas posibilidades, pero le recomiendo agregar estas líneas en su archivo
~/.ssh/config
:
Host your-remote-host
HostkeyAlgorithms +ssh-dss
Otra posibilidad es utilizar la variable de entorno
GIT_SSH
para especificar estas opciones:
GIT_SSH_COMMAND="ssh -oHostKeyAlgorithms=+ssh-dss" git clone ssh://user@host/path-to-repository
Estoy tratando de crear un repositorio git en mi servidor web y clonarlo en mi computadora. Esto es lo que hice:
- Creé un repositorio en el servidor remoto.
-
ssh-keygen -t dsa
un par de claves:ssh-keygen -t dsa
. - Agregué mi clave a ssh-agent.
-
Copié a la clave pública del servidor en
~/.ssh
.
Y luego, después de intentar ejecutar el comando
git clone ssh://user@host/path-to-repository
, aparece un error:
No se puede negociar con XX.XXX.XX.XX: no se encontró ningún tipo de clave de host coincidente. Su oferta: ssh-dss
fatal: no se pudo leer desde el repositorio remoto.
Asegúrese de tener los derechos de acceso correctos y de que exista el repositorio.
Qué significa eso?
O sigues el enfoque anterior o este
Cree el archivo de configuración en el directorio .ssh y agregue estas líneas.
host xxx.xxx
Hostname xxx.xxx
IdentityFile ~/.ssh/id_rsa
User xxx
KexAlgorithms +diffie-hellman-group1-sha1
Para mí esto funcionó: (agregado en
.ssh/config
)
Host *
HostkeyAlgorithms +ssh-dss
PubkeyAcceptedKeyTypes +ssh-dss
Quiero colaborar un poco con la solución para el lado del servidor. Entonces, el servidor dice que no es compatible con DSA, esto se debe a que el cliente openssh no lo activa de manera predeterminada :
OpenSSH 7.0 y superior deshabilitan de manera similar el algoritmo de clave pública ssh-dss (DSA). También es débil y recomendamos no usarlo.
Entonces, para solucionar esto en el lado del servidor, debo activar otros algoritmos clave como RSA o ECDSA. Acabo de tener este problema con un servidor en un lan. Sugiero lo siguiente:
Actualiza el openssh:
yum update openssh-server
Combine nuevas configuraciones en sshd_config si hay un sshd_config.rpmnew.
Verifique que haya claves de hosts en / etc / ssh /.
Si no genera otros nuevos, vea
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
Verifique en / etc / ssh / sshd_config la configuración de HostKey.
Debe permitir la configuración de RSA y ECDSA.
(Si todos ellos están comentados por defecto, también permitirá el RSA, vea en
man sshd_config
la parte de 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
Para el lado del cliente, cree una clave para ssh (no un DSA como en la pregunta) simplemente haciendo esto:
ssh-keygen
Después de esto, debido a que hay más opciones que ssh-dss (DSA), el cliente openssh (> = v7) debe conectarse con RSA o un algoritmo mejor.
Esta es mi primera pregunta respondida, agradezco las sugerencias: D.
Si eres como yo y prefieres no hacer que este sistema de agujeros de seguridad sea para todo el usuario, entonces puedes agregar una opción de configuración a cualquier repositorio de git que lo necesite ejecutando este comando en esos repositorios. (la nota solo funciona con la versión git> = 2.10, lanzada el 04/09/2016)
git config core.sshCommand ''ssh -oHostKeyAlgorithms=+ssh-dss''
Sin embargo, esto solo funciona después de configurar el repositorio. Si no se siente cómodo agregando un control remoto manualmente (y solo desea clonar), puede ejecutar el clon de esta manera:
GIT_SSH_COMMAND=''ssh -oHostKeyAlgorithms=+ssh-dss'' git clone ssh://user@host/path-to-repository
luego ejecute el primer comando para hacerlo permanente.
Si no tiene la última versión y todavía desea mantener el agujero lo más local posible, le recomiendo poner
export GIT_SSH_COMMAND=''ssh -oHostKeyAlgorithms=+ssh-dss''
en un archivo en algún lugar, diga
git_ssh_allow_dsa_keys.sh
y
git_ssh_allow_dsa_keys.sh
cuando sea necesario.
También puede agregar
-oHostKeyAlgorithms=+ssh-dss
en su línea ssh:
ssh -oHostKeyAlgorithms=+ssh-dss user@host