У 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, работающий в фоновом режиме, и создал SOCK- файл S.gpg-agent.ssh
).
Затем попытался ssh на сервер как обычный способ.
И это дало мне ошибку.
Затем я попытался включить поддержку замазки (строка enable-putty 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
Можете ли вы определить мою проблему? В шпатлевке