He buscado por todas partes y no puedo encontrar la solución a esto. Funcionó una vez ... hace un tiempo.

Estoy tratando de clonar un repositorio remoto usando git en mi estación de trabajo local de Windows 10. Lo intenté en VSC, git bash y no tuve suerte. He regenerado las claves ssh varias veces y me aseguré de que estén en mi cuenta en bitbucket. También hice que el administrador verificara que tenía permisos en bitbucket. Puedo clonar con https, pero también necesito ssh debido a las dependencias del módulo para terraform init, porque usa ssh.

Este es el error que recibo

Cloning into 'terraform'...
git@something.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

¿Alguna idea sobre cómo hacer que funcione la conexión SSH? También verifiqué que el servicio openssh ssh-agent se estaba ejecutando.

ACTUALIZAR con salida ... todavía no lo entiendo

Forzar la clave privada

PS C:\Users\me> ssh -i c:\users\me\.ssh\id_rsa -Tv git@something.com -p 7999
OpenSSH_for_Windows_7.6p1, LibreSSL 2.6.4
debug1: Connecting to something.com [1.1.1.1] port 7999.
debug1: Connection established.
debug1: identity file c:\\users\\me\\.ssh\\id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file c:\\users\\me\\.ssh\\id_rsa-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_7.6
debug1: Remote protocol version 2.0, remote software version APACHE-SSHD-2.4.0
debug1: no match: APACHE-SSHD-2.4.0
debug1: Authenticating to something.com:7999 as 'git'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: ecdh-sha2-nistp256
debug1: kex: host key algorithm: rsa-sha2-512
debug1: kex: server->client cipher: aes128-ctr MAC: hmac-sha2-256-etm@openssh.com compression: none
debug1: kex: client->server cipher: aes128-ctr MAC: hmac-sha2-256-etm@openssh.com compression: none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ssh-rsa SHA256:tbUbYIJrt+P7aWKYsn09IsD+iouWjGiR6am8BaXXXXX
debug1: Host '[something.com]:7999' is known and matches the RSA host key.
debug1: Found key in C:\\Users\\me/.ssh/known_hosts:1
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:bvs3ECFl7m4r8SN404IIeuiFG6AoNqfdMCFp+AYXXXX c:\\users\\me\\.ssh\\id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 535
debug1: read_passphrase: can't open /dev/tty: No such file or directory
Enter passphrase for key 'c:\users\me\.ssh\id_rsa':
debug1: Authentication succeeded (publickey).
Authenticated to something.com ([1.1.1.1]:7999).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: pledge: network
shell request failed on channel 0

Forzar clave pública

PS C:\Users\aedle> ssh -i c:\users\me\.ssh\id_rsa.pub -Tv git@ssomething.com -p 7999
OpenSSH_for_Windows_7.6p1, LibreSSL 2.6.4
debug1: Connecting to something.com [1.1.1.1] port 7999.
debug1: Connection established.
debug1: identity file c:\\users\\me\\.ssh\\id_rsa.pub type 0
debug1: key_load_public: No such file or directory
debug1: identity file c:\\users\\me\\.ssh\\id_rsa.pub-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_7.6
debug1: Remote protocol version 2.0, remote software version APACHE-SSHD-2.4.0
debug1: no match: APACHE-SSHD-2.4.0
debug1: Authenticating to something.com:7999 as 'git'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: ecdh-sha2-nistp256
debug1: kex: host key algorithm: rsa-sha2-512
debug1: kex: server->client cipher: aes128-ctr MAC: hmac-sha2-256-etm@openssh.com compression: none
debug1: kex: client->server cipher: aes128-ctr MAC: hmac-sha2-256-etm@openssh.com compression: none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ssh-rsa SHA256:tbUbYIJrt+P7aWKYsn09IsD+iouWjGiR6am8Ba9XXXX
debug1: Host '[something.com]:7999' is known and matches the RSA host key.
debug1: Found key in C:\\Users\\me/.ssh/known_hosts:1
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey after 4294967296 blocks
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:bvs3ECFl7m4r8SN404IIeuiFG6AoNqfdMCFp+AXXXXX c:\\users\\me\\.ssh\\id_rsa.pub
debug1: Server accepts key: pkalg ssh-rsa blen 535
Load key "c:\\users\\me\\.ssh\\id_rsa.pub": invalid format
debug1: No more authentication methods to try.
git@something.com: Permission denied (publickey).

Todavía estoy completamente perdido, porque cuando vuelvo e intento clonar, obtengo esto:

git clone ssh://something.com:7999/ter/terraform.git
Cloning into 'terraform'...
git@something.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

El problema general fue que ssh_config para git no podía ver mi clave privada en ~ / .ssh / id_rsa ... así que tuve que especificar exactamente en qué lugar de la C: estaba ... y no mi configuración de git se ve así después de cambiar esto y descomentar la línea

 Host *
#   ForwardAgent no
#   ForwardX11 no
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
   IdentityFile c:\users\me\.ssh\id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
#   Port 7999
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,umac-64@openssh.com
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h
#   UserKnownHostsFile ~/.ssh/known_hosts.d/%k
# Added by git-extra
1
dcvl 4 mar. 2021 a las 02:17

1 respuesta

La mejor respuesta

¿Hay alguna forma de forzar y garantizar que cualquier comando git use una clave ssh específica?

Comience probando el acceso de autenticación con:

ssh -i C:\path\to\specific\key -Tv git@something.com

Una vez que reciba un mensaje de "Bienvenida", puede comenzar a verificar su archivo GIT_SSH_COMMAND o su archivo ~/.ssh/config para que el uso de esa clave sea persistente.

Primero, cree una clave ssh sin frase de contraseña, para probar, para no tener que lidiar con ssh-agent (nuevamente, para probar)

La segunda ssh -i hace referencia siempre a la clave privada , nunca a la clave pública (.pub)

Tercero: un git clone ssh siempre usaría el puerto 22, no el 7999: por lo tanto, no es sorprendente que el comando git falle.

Entonces: crea un archivo de configuración en c:\users\me\.ssh\ con:

Host bb
  Hostname something.com
  Port 7999
  User git
  IdentityFile c:\users\me\.ssh\id_rsa

Luego usa esa entrada Host bb para tu clon:

git clone bb:ter/terraform.git
1
VonC 4 mar. 2021 a las 15:34