Estoy tratando de crear un repositorio de git en mi servidor web y clonarlo en mi computadora. Esto es lo que hice:
- Creé un repositorio en el servidor remoto.
- Me genera 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 un intento de 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 el repositorio existe.
Qué significa eso?
ssh
web-hosting
Nikita Gorshkov
fuente
fuente
Respuestas:
La versión reciente de openssh desaprobó las claves DSA de forma predeterminada. Debe sugerirle a su proveedor de GIT que agregue una clave de host razonable. Depender únicamente de los DSA no es una buena idea.
Como solución alternativa, debe informar a su
ssh
cliente que desea aceptar 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 a su~/.ssh/config
archivo:Otra posibilidad es usar la variable de entorno
GIT_SSH
para especificar estas opciones:fuente
HostkeyAlgorithms +ssh-dss
. Gracias.También puede agregar
-oHostKeyAlgorithms=+ssh-dss
en su línea ssh:fuente
Para mí esto funcionó: (agregado a
.ssh\config
)fuente
yuor-host
es el anfitriónssh
contra el que te enfrentas. Establecer valores predeterminados no seguros para todos los hosts siempre es una mala idea.Si eres como yo, y prefieres no hacer este sistema de agujeros de seguridad o para todo el usuario, puedes agregar una opción de configuración a cualquier repositorio git que lo necesite ejecutando este comando en esos repositorios. (la nota solo funciona con la versión de git> = 2.10, lanzada el 2016-09-04)
Sin embargo, esto solo funciona después de que se configura el repositorio. Si no se siente cómodo agregando un control remoto manualmente (y solo desea clonar), puede ejecutar el clon de esta manera:
luego ejecute el primer comando para hacerlo permanente.
Si no tiene lo último y aún así le gustaría mantener el hoyo lo más local posible, le recomiendo poner
en un archivo en algún lugar, digamos
git_ssh_allow_dsa_keys.sh
, esource
ingréselo cuando sea necesario.fuente
Quiero colaborar un poco con la solución del 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 forma predeterminada :
Entonces, para solucionar esto en el lado del servidor, debería activar otros algoritmos clave como RSA o ECDSA. Acabo de tener este problema con un servidor en una lan. Sugiero lo siguiente:
Actualice el openssh:
Fusionar 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, consulte
man ssh-keygen
.Verifique en / etc / ssh / sshd_config la configuración de HostKey. Debería permitir la configuración de RSA y ECDSA. (Si todos ellos están comentados por defecto permitirá también el RSA, ver en
man sshd_config
la parte de HostKey).Para el lado del cliente, cree una clave para ssh (no un DSA como en la pregunta) simplemente haciendo esto:
Después de esto, debido a que hay más opciones que ssh-dss (DSA), el cliente openssh (> = v7) debería conectarse con RSA o un algoritmo mejor.
Aquí otro buen artículo.
Esta es mi primera pregunta respondida, doy la bienvenida a sugerencias: D.
fuente
¿Cómo se especificarían varios algoritmos? Lo pregunto porque git acaba de actualizarse en mi computadora portátil de trabajo (Windows 10, usando la compilación oficial de Git para Windows) y recibí este error cuando intenté enviar una rama del proyecto a mi control remoto de Azure DevOps. Traté de empujar --set-upstream y obtuve esto:
Entonces, ¿cómo se implementarían las sugerencias anteriores teniendo en cuenta ambos? (Como solución rápida, utilicé la solución de @ golvok con group14 y funcionó, pero realmente no sé si 1 o 14 es mejor, etc.)
fuente
O sigue el enfoque anterior o este
Cree el archivo de configuración en el directorio .ssh y agregue estas líneas.
fuente