O gpg-agent tem opções "--enable-ssh-support" e "--enable-putty-support" que permitem usá-lo como substituto direto do conhecido agente ssh.
Eu tenho puxado meu cabelo para fora tentando descobrir exatamente como fazer isso funcionar no windows e no git-bash. (Por favor, não me sugira usar o putty porque eu tenho muitos scripts e outros programas que precisam ser trabalhados com o git bash e openssh na minha máquina windows pc, incluindo o PHPStorm etc)
Minha primeira tentativa foi ter enable-ssh-support
linha no arquivo C:\Users\[user]\AppData\Roaming\gnupg\gpg-agent.conf
,
E export SSH_AUTH_SOCK=/c/users/[user]/AppData/Roaming/gnupg/S.gpg-agent.ssh
linha no arquivo /c/users/[user]/.bash_profile
. (também criei uma variável de ambiente do Windows SSH_AUTH_SOCK
com o valor C:\Users\[username]\AppData\Roaming\gnupg\S.gpg-agent.ssh
)
Eu tenho minha chave secreta de GPG no conjunto de chaves, com subchaves habilitadas para autenticação e criptografia.
e adicionei o keygrip da subchave habilitada para autenticação no arquivo C:\Users\[user]\AppData\Roaming\gnupg\sshcontrol
.
Desde que o GnuPG 2.2.4 vem com --export-ssh-key opção, então eu não preciso de monkeysphere
para converter a chave GPG para o formato OpenSSH. então eu exportei minha chave pública e a coloquei no arquivo authorized_keys em uma caixa Linux remota com permissões corretas (testado com outro computador usando massa).
Então eu executei:
gpg-connect-agent killagent /bye
e gpg-connect-agent /bye
no PowerShell (e ele iniciou o gpg-agent em execução em segundo plano e criou o arquivo S.gpg-agent.ssh
SOCK).
Em seguida, tentou ssh no servidor como o caminho normal.
E isso me deu um erro.
Então eu tentei ativar o suporte de putty ( enable-putty-support
line em gpg-agent.conf
permite que você ative o suporte de putty.
Além disso, você precisa criar uma variável de ambiente no Windows
GIT_SSH='C:\ProgramData\chocolatey\bin\PLINK.EXE'
)
Então eu tentei usar o OpenSSH que vem com o gerenciador de pacotes chocolatey também.
Nenhum deles funcionou como esperado.
finalmente, desisti de tudo e tentei me conectar usando o putty e o gpg-agent. Eu desinstalei o git-bash também. Então eu apenas tentei usar o GnuPG e o Putty.
Eu permiti o encaminhamento de agentes em putty ssh - > auth. então tentei me conectar ao servidor, mas ainda pedindo a senha. O gpg-agent não encaminha a chave, mas detecta o gpg-agent
como PAGEANT
Registro de eventos no 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
Você consegue identificar meu problema?
Em putty log