Gpg-агент под Windows в качестве SSH-агента для git bash

1321
Ron

У gpg-agent есть опции "--enable-ssh-support" и "--enable-putty-support", что позволяет использовать его как замену общеизвестному ssh-agent.

Я дергал себя за волосы, пытаясь понять, как именно это работает в windows и git-bash. (Пожалуйста, не предлагайте мне использовать putty, потому что у меня есть много скриптов и других программ, которые требуют работы с git bash и openssh на моем компьютере с Windows, включая 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файле. (также я создал переменную среды Windows SSH_AUTH_SOCKсо значением C:\Users\[username]\AppData\Roaming\gnupg\S.gpg-agent.ssh)

У меня есть секретный ключ GPG в кольце для ключей с подключами аутентификации и шифрования.

и я добавил в файл ключ-подсказку подключенной аутентификации C:\Users\[user]\AppData\Roaming\gnupg\sshcontrol.

Поскольку GnuPG 2.2.4 поставляется с опцией --export-ssh-key, мне не нужно monkeysphereконвертировать ключ GPG в формат OpenSSH. поэтому я экспортировал свой открытый ключ и поместил его в файл authorized_keys в удаленном окне Linux с правильными разрешениями (проверено на другом компьютере с использованием putty).

Затем я выполнил: gpg-connect-agent killagent /byeи gpg-connect-agent /byeв PowerShell (и он запустил gpg-agent, работающий в фоновом режиме и создал S.gpg-agent.sshфайл SOCK).

Затем попытался ssh на сервер как обычный способ.

И это дало мне ошибку.

Затем я попытался включить поддержку замазки ( enable-putty-supportстрока gpg-agent.confпозволяет вам включить поддержку замазки.

Также вам нужно создать переменную окружения в Windows GIT_SSH='C:\ProgramData\chocolatey\bin\PLINK.EXE')

Затем я попытался использовать OpenSSH, который также поставляется с шоколадным менеджером пакетов.

Никто из них не работал так, как ожидалось.

наконец, я отказался от всего и попытался соединиться, используя putty и gpg-agent. Я тоже удалил git-bash. Тогда я просто попытался использовать GnuPG и Putty.

Я разрешил переадресацию агента в putty ssh -> auth. Затем я попытался подключиться к серверу, но он все еще спрашивает пароль. gpg-agent не пересылает ключ, но обнаруживает gpg-agentкакPAGEANT

Журнал событий в замазке:

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

Можете ли вы определить мою проблему? В шпатлевке

2
Привет, Рон, может тебе стоит разделить это на несколько небольших проблем. У вас все еще есть проблема? Vlastimil Ovčáčík 6 лет назад 0
Я подозреваю, что причина, по которой он не работает в git-bash, связана либо с тем, как git-bash обрабатывает сокеты, либо с тем, как gpg-agent в Windows предоставляет этот сокет. Тем не менее, я могу подтвердить, что возможно (по крайней мере, на сегодняшний день, когда я только что попробовал) по крайней мере использовать gpg-agent с PuTTY. Если вы хотите сузить сферу вашего вопроса, я с удовольствием предоставлю шаги, которые я использовал. demonbane 5 лет назад 0

1 ответ на вопрос

2
Vlastimil Ovčáčík

Давайте сделаем это шаг за шагом.

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 

Таким образом, вы можете подтвердить, что у вашего gpg-агента есть ключ, который вы ожидаете загрузить. Следующим шагом будет убедиться, что сервер запрашивает правильный ключ.

2. TBA

Похожие вопросы