Problemas de authentication de ssh (y git) en el puerto / ip externo (la ip local funciona bien)

Estoy tratando de configurar un repository de git en una máquina de server que sea remotamente accesible a través de Internet.

Logré hacer funcionar git en direcciones IP locales / internas. Dentro de la LAN local, tengo una authentication basada en key privada que funciona para SSH (inicios de session de passwords desactivados), y puedo clonar, presionar y tirar exitosamente usando Git y SSH, por ejemplo;

ssh USER@192.168.1.xxx [-> accepts public key, gives me a remote console prompt as "USER", etc] git clone git+ssh://USER@192.168.1.xxx//gitdir/project.git [-> creates a local clone as desinetworking, commits and push work, no problems seemingly] 

Sin embargo, ahora estoy tratando de acceder a esta máquina a través de una IP externa / de Internet de la misma manera, y no entiendo el comportamiento que me está dando.

  • He habilitado el reenvío de puertos en mi enrutador para el puerto 22 a la máquina del server.
  • Abrí el puerto 22 en el software de "UFW" en la máquina del server.
  • Por lo que puedo decir, no tengo configuraciones en mi enrutador, configuraciones SSH o UFW que puedan bloquear cualquier dirección web específica o causar problemas en mi máquina local o en el server. El server debe aceptar una connection desde cualquier dirección externa que acceda a través del puerto 22, y tanto mi máquina local como el server permiten conexiones salientes en general.

  • Estoy usando Ubuntu 17.04 en la máquina local, si eso importa.

  • Tanto el server como la máquina local están actualmente en la misma LAN / conectados al mismo enrutador.

  • INHABILITÉ "ChallengeResponseAuthentication" y "PasswordAuthentication", y HE HABILITADO "PubkeyAuthentication" en mi "sshd_config".

  • He comprobado cuatro veces que estaba usando la dirección IP correcta, y he usado copyr y pegar en lugar de tipear manualmente. A less que realmente me esté perdiendo algo, estoy intentando conectarme a la máquina correcta.

Para un inicio de session SSH directo, obtengo esto (usando el indicador -v):

 LOCALUSER@LOCALMACHINE:~$ ssh -v -i ~/.ssh/[PRIVATE_KEY] USER@[IP6_EXTERNAL_IP] OpenSSH_7.4p1 Ubuntu-10, OpenSSL 1.0.2g 1 Mar 2016 debug1: Reading configuration data /home/[HOME]/.ssh/config debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to [IP6_EXTERNAL_IP] [[IP6_EXTERNAL_IP]] port 22. debug1: Connection established. debug1: identity file /home/[HOME]/.ssh/[PRIVATE_KEY] type 4 debug1: key_load_public: No such file or directory debug1: identity file /home/[HOME]/.ssh/[PRIVATE_KEY]-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_7.4p1 Ubuntu-10 debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4p1 Ubuntu-10 debug1: match: OpenSSH_7.4p1 Ubuntu-10 pat OpenSSH* compat 0x04000000 debug1: Authenticating to [IP6_EXTERNAL_IP] as 'USER' debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: algorithm: curve25519-sha256 debug1: kex: host key algorithm: ecdsa-sha2-nistp256 debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ecdsa-sha2-nistp256 SHA256:[SHA_HASH] debug1: Host '[IP6_EXTERNAL_IP]' is known and matches the ECDSA host key. debug1: Found key in /home/[HOME]/.ssh/known_hosts:4 debug1: rekey after 134217728 blocks debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: rekey after 134217728 blocks debug1: SSH2_MSG_EXT_INFO received debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521> debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,password debug1: Next authentication method: publickey debug1: Offering ED25519 public key: /home/[HOME]/.ssh/[PRIVATE_KEY] debug1: Authentications that can continue: publickey,password debug1: Next authentication method: password USER@[IP6_EXTRNAL_IP]'s password: 

… y ninguna contraseña que suministre funciona. No sé por qué el server incluso está pidiendo una contraseña, deshabilité los inicios de session de passwords globalmente en "sshd_config", y he verificado tres veces que no haya ninguna exception para este usuario.

De manera similar, Git solicita la contraseña de mi usuario remoto cuando trato de clonar desde el server a través de la IP externa (porque funciona a través de SSH, por supuesto), si hago lo siguiente para configurar una IP externa, en lugar de la IP local original :

 git remote set-url origin ssh+git://USER@[REMOTE_IP]//gitdir/project.git 

Cualquier ayuda para entender lo que me falta aquí sería muy apreciada; Gracias.

Lo averigué:

No estoy seguro de por qué, pero a mi sistema no le gusta cuando trato de acceder a mi server a través de una IP pública externa, desde dentro de mi LAN. Supongo que esto se debe a algún tipo de confusión de packages, ya que la máquina local y la máquina server comparten la misma IP pública a través del enrutador (se agradecerá la confirmación).

Cuando intenté conectarme desde otra networking, las cosas funcionaron correctamente y como se esperaba. Se me pide mi key pública y de inmediato la rechazo sin request de contraseña si no proporciono la correcta, y tanto SSH como git a través de SSH parecen funcionar como se desea a través de Internet después de cambiar mi fuente de repository para usar la IP pública . Cualquier detalle adicional fue cubierto editando ~ / .ssh / config para establecer identidades de key y hosts.

Marcado como resuelto. Gracias.