外部 port/ip 上的 ssh(和 git)身份验证问题(本地 ip 工作正常)

ssh (and git) authentication issues on external port/ip (local ip works fine)

我正在尝试在可通过 Internet 远程访问的服务器计算机上设置一个 git 存储库。

我已成功让 git 处理 local/internal IP 地址。在本地 LAN 中,我有基于私钥的身份验证用于 SSH(禁用密码登录),我可以使用 Git 和 SSH 成功克隆、推送和拉取,例如;

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 desired, commits and push work, no problems seemingly]

但是,我现在正尝试以相同的方式通过 external/internet IP 访问这台机器,但我不明白它给我的行为。

对于直接 SSH 登录,我得到这个(使用 -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: 

...而且我提供的密码均无效。我不知道为什么服务器甚至要求输入密码,我在 "sshd_config" 中全局禁用了密码登录,并且我已经三重检查该用户也没有例外。

Git 当我尝试通过外部 IP 从服务器克隆时(当然因为它是通过 SSH 工作的),如果我执行以下操作将其设置为使用外部 IP,而不是原来的本地 IP:

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

如果能帮助我理解这里遗漏的内容,我们将不胜感激;谢谢。

想通了:

我不清楚为什么,但是当我尝试从我自己的 LAN 内部通过外部 public ip 访问我的服务器时,我的系统不喜欢它。我假设这是由于某种数据包混淆,因为本地机器和服务器机器通过路由器共享相同的 public ip(对此确认将不胜感激)。

当我尝试从另一个网络连接时,一切正常并按预期进行。我被要求提供我的 public 密钥,如果我没有提供正确的密钥,我会立即拒绝并且没有密码提示,并且 SSH 和 git 通过 SSH 似乎在我更改后通过互联网按预期工作我的回购源使用 public ip。编辑 ~/.ssh/config 以设置密钥身份和主机来涵盖任何进一步的详细信息。

标记为已解决。谢谢。