Разрешения на отказ (публиковать) в Windows при использовании Moovweb

Я могу аутентифицировать, генерировать, нажимать и т.д., просто отлично с моими ключами SSH и учетными данными Moovweb на компьютерах Mac и Linux.

Однако на моей машине с Windows, используя Git Bash, я получаю сообщение SSH Permission denied (publickey). Сообщение об ошибке ниже:

$> moov generate 123dsfsdsf nytimes.com
Running environment checks.
Verifying that git is installed...OK
Checking that current 123dsfsdsf directory doesn't exist...OK
Registering project with MoovCloud.
Authenticating with MoovCloud.
Checking for git access...Enter passphrase for key '/Users/firstname.lastname/.ssh/id_rsa':
Enter passphrase for key '/Users/firstname.lastname/.ssh/id_rsa':
FAILED
> Need to upload an ssh key in order to generate a project...
Found the following SSH public keys:
1 ) id_rsa.pub
2 ) new_rsa.pub
Which would you like to use with your Moovweb account? 2
Uploading public key...
Successfully uploaded public key new_rsa.pub as '[email protected]'
You are now ready to push projects to MoovCloud!
Creating project in MoovCloud...OK
Generating files...OK
Cloning project locally.
Enter passphrase for key '/Users/firstname.lastname/.ssh/id_rsa':
Enter passphrase for key '/Users/firstname.lastname/.ssh/id_rsa':
Cloning into '123dsfsdsf'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
ERROR:   Error cloning git repo: exit status 128
Please try cloning the repository (git clone [email protected]:firstnameglastname/123dsfsdsf.git) again later.
Try 'moov help generate' to find out details.

Похоже на ошибку SSH, специфичную для Windows. Любые обходные пути?

Ответ 1

Как упоминалось в предыдущих ответах, ошибка Permission denied в Windows заключается в том, что вы пытаетесь использовать ключ, отличный от id_rsa.

Windows не хватает колоколов и свистов, которым Linux и Mac должны попробовать все ваши открытые ключи при попытке подключиться к серверу через SSH. Если вы используете команду ssh, вы можете указать, какой ключ использовать, передав флаг -i, а затем путь к используемому ключу:

ssh -i ~/.ssh/moovweb_rsa [email protected]

Вышеуказанная команда должна работать нормально, если вы загрузили moovweb_rsa.pub на консоль (либо с помощью команды moov login, либо с помощью пользовательского интерфейса консоли). Тем не менее, попытка любых связанных с git команд не работает, потому что Git не дает вам возможности выбрать, какой ключ использовать при подключении к удаленному устройству Git. Из-за этого SSH вынуждена использовать ключ по умолчанию, id_rsa, и если этот ключ не работает (или не существует), то соединение завершается с ошибкой отказа.

Одним из возможных решений, предложенным в других ответах, является просто переименование вашего ключа на id_rsa. Для большинства людей это прекрасное решение. Однако, если у вас уже есть клавиша id_rsa, и вы предпочитаете использовать другой ключ с Moovweb, вы можете отредактировать свой файл ~/.ssh/config, добавив следующее содержимое:

Host git.moovweb.com
    IdentityFile ~/.ssh/moovweb_rsa

Если вы добавите вышеуказанные строки в ваш файл ~/.ssh/config (создайте его, если он не существует), вы сможете успешно получить Git для связи с удаленным сервером Git Moovweb. Конфигурация в основном сообщает SSH, что для данного хоста (git.moovweb.com) SSH должен использовать данный ключ, а не по умолчанию.

Не стоит ничего, что это происходит со всеми пультами Git; взаимодействия с Github, Heroku и т.д. также страдают от этой проблемы в Windows. Вы можете легко расширить свой ~/.ssh/config файл, чтобы использовать отдельные ключи SSH для каждой из этих служб, если вы так пожелаете:

Host git.moovweb.com
    IdentityFile ~/.ssh/moovweb_rsa

Host github.com
    IdentityFile ~/.ssh/github_rsa

Host heroku.com
    IdentityFile ~/.ssh/heroku_rsa

Ответ 2

Быстрое и грязное решение: используйте только клавишу id_rsa.pub по умолчанию

Некоторые примечания:

  • убедитесь, что вы вводите правильную кодовую фразу в id_rsa.pub
  • do не использовать другой ключ, new_rsa.pub

Оказывается, что Windows Git Bash не подходит для всех классных утилит, к которым привыкли пользователи Mac/Linux. В частности, вы не выполняете ssh-agent, чтобы обрабатывать несколько ключей. Без ssh-agent команда git, похоже, использует только клавишу id_rsa.pub по умолчанию.

Вы можете проверить, что это проблема SSH/Windows после Github awesome SSH troubleshooting guide. Вы получите Permission denied (publickey) независимо от того, с каким SSH/Git сервером вы пытаетесь подключиться.