Ron*_*Ron 5 ssh git gpg4win gnupg gpg-agent
gpg-agent 具有选项“--enable-ssh-support”和“--enable-putty-support”,允许它使用它作为众所周知的 ssh-agent 的替代品。
我一直在努力弄清楚如何在 Windows 和 git-bash 中实现这项工作。(请不要建议我使用 putty,因为我有很多脚本和其他程序需要在我的 windows pc 机器上使用 git bash 和 openssh,包括 PHPStorm 等)
我的第一次尝试是enable-ssh-support在C:\Users\[user]\AppData\Roaming\gnupg\gpg-agent.conf文件中有一行,
并export SSH_AUTH_SOCK=/c/users/[user]/AppData/Roaming/gnupg/S.gpg-agent.ssh在/c/users/[user]/.bash_profile文件中行。(我还创建了一个SSH_AUTH_SOCK带有值的 Windows 环境变量C:\Users\[username]\AppData\Roaming\gnupg\S.gpg-agent.ssh)
我在密钥环中有我的 GPG 秘密密钥,带有启用身份验证和加密的子密钥。
并且我在C:\Users\[user]\AppData\Roaming\gnupg\sshcontrol文件中添加了启用身份验证的子密钥的 keygrip 。
由于 GnuPG 2.2.4 带有--export-ssh-key选项,所以我不需要monkeysphere将 GPG 密钥转换为 OpenSSH 格式。所以我导出了我的公钥,并将它放在具有正确权限的远程 Linux 机器中的 authorized_keys 文件中(使用腻子在另一台计算机上测试)。
然后我执行:
gpg-connect-agent killagent /bye和gpg-connect-agent /byePowerShell中(并开始在后台运行的GPG代理并创建了S.gpg-agent.sshSOCK文件)。
然后尝试以常规方式 ssh 进入服务器。
它给了我一个错误。
然后我尝试启用腻子支持(enable-putty-support行中gpg-agent.conf允许您启用腻子支持。
您还需要在 Windows 中创建一个环境变量
GIT_SSH='C:\ProgramData\chocolatey\bin\PLINK.EXE')
然后我也尝试使用带有巧克力包管理器的 OpenSSH。
他们都没有按预期工作。
最后,我放弃了一切,尝试仅使用腻子和 gpg-agent 进行连接。我也卸载了 git-bash。然后我只是尝试使用 GnuPG 和 Putty。
我允许代理在 putty ssh -> auth 中转发。然后我尝试连接到服务器,但它仍然要求输入密码。gpg-agent 不转发密钥,但它检测gpg-agent为PAGEANT
putty 中的事件日志:
2018-02-10 16:48:51 Connecting to xx.xxx.xxx.xx port 22
2018-02-10 16:48:51 We claim version: SSH-2.0-PuTTY_Release_0.70
2018-02-10 16:48:52 Server version: SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.8
2018-02-10 16:48:52 We believe remote version has SSH-2 channel request bug
2018-02-10 16:48:52 Using SSH protocol version 2
2018-02-10 16:48:52 Doing ECDH key exchange with curve Curve25519 and hash SHA-256
2018-02-10 16:48:53 Server also has ecdsa-sha2-nistp256/ssh-dss/ssh-rsa host keys, but we don't know any of them
2018-02-10 16:48:53 Host key fingerprint is:
2018-02-10 16:48:53 ssh-ed25519 256 1f:7b:5d:c4:b4:ae:5d:81:72:da:1d:c8:b2:cc:67:7b
2018-02-10 16:48:53 Initialised AES-256 SDCTR client->server encryption
2018-02-10 16:48:53 Initialised HMAC-SHA-256 client->server MAC algorithm
2018-02-10 16:48:53 Initialised AES-256 SDCTR server->client encryption
2018-02-10 16:48:53 Initialised HMAC-SHA-256 server->client MAC algorithm
2018-02-10 16:49:07 Pageant is running. Requesting keys.
2018-02-10 16:49:07 Pageant has 0 SSH-2 keys
你能看出我的问题吗?在腻子日志中
让我们一步一步来。
1. Pageant has 0 SSH-2 keys
这现在正在阻止你。我假设您日志报告选美,但实际上您正在后台运行 gpg-agent。在继续之前,您可能需要仔细检查这一点。
让我们确保 gpg-agent 已加载 ssh 身份验证所需的密钥。
> gpg --version
gpg (GnuPG) 2.1.21
...
> gpg -k --with-keygrip
...
sub rsa4096/0x0123456789ABCDEF 2018-01-01 [A] [expires: 2019-01-01]
Keygrip = 0123456789ABCDEF0123456789ABCDEF01234567
...
> gpg-connect-agent "keyinfo --list" /bye
...
S KEYINFO 0123456789ABCDEF0123456789ABCDEF01234567 T xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx OPENPGP.3 - - - - -
...
OK
Run Code Online (Sandbox Code Playgroud)
这样您就可以确认您的 gpg-agent 具有您期望加载的密钥。下一步是确保服务器请求正确的密钥。
2.待定