Не могу получить доступ к AWS CodeCommit через SSH
Неимоверно трудно понять, как заставить AWS CodeCommit работать со стандартной аутентификацией SSH. Посмотрел другую тему, как это, но ответа нет, и мне пока не разрешено комментировать. Это на Windows с помощью Git Bash.
Репро Шаги
- Создан пользователь IAM с полными разрешениями (AwsAdministrator)
- Из Git Bash в ~ /.ssh
- "cat id_rsa.pub" и скопировать вывод в буфер обмена
- В консоли IAM нажмите кнопку, чтобы добавить ключ SSH и вставить в поле ввода. Нажмите Сохранить.
- Попытайтесь получить доступ к репозиторию CodeCommit (в этом случае пытаясь протолкнуть) и получите "Отказано в доступе".
Git + SSH выход
Вот что я получаю от SSH с журналированием DEBUG3:
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /c/Users/Dan/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 535
debug2: input_userauth_pk_ok: fp SHA256:<omitted>
debug3: sign_and_send_pubkey: RSA SHA256:<same-as-above>
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
fatal: Could not read from remote repository.
Для сравнения вот что я получаю, используя те же SSH-ключи для GitHub:
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /c/Users/Dan/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 535
debug2: input_userauth_pk_ok: fp SHA256:<same-as-above>
debug3: sign_and_send_pubkey: RSA SHA256:<same-as-above>
debug1: Authentication succeeded (publickey).
Authenticated to github.com ([192.30.252.130]:22).
Приведенный выше вывод получен при запуске обычной команды git, такой как git push origin master
с включенным ведением журнала отладки ssh в .ssh/config
:
Host git-codecommit.us-east-1.amazonaws.com
LogLevel DEBUG3
Host github.com
LogLevel DEBUG3
9 ответов
Похоже, вы пропустили шаг в настройке SSH. Вам нужно добавить эту информацию в ваш файл.ssh/config:
Host git-codecommit.us-east-1.amazonaws.com
User Your-SSH-Key-ID, such as APKAEIBAERJR2EXAMPLE
IdentityFile Your-Private-Key-File, such as ~/.ssh/codecommit_rsa or ~/.ssh/id_rsa
Ваш-SSH-Key-ID можно получить с консоли IAM.
Мой случай был немного другим.
На вкладке "Учетные данные безопасности" есть как "Ключи доступа", так и "Ключи SSH для AWS CodeCommit". Убедитесь, что вы используете идентификатор ключа CodeCommit.
Следуйте следующей документации от AWS
Linux
https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-unixes.html
Окна
https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-windows.html
Я тестировал настройку SSH-соединения только для Windows, пожалуйста, проверьте SSH-соединение для Linux, перейдя по указанной выше ссылке;
Ниже приведены шаги по настройке SSH-соединения для codecommit в Windows 10.
Шаг 1
Начальная конфигурация для CodeCommit (см. Ссылку на документацию)
Шаг 2
Установите Git (см. Ссылку на документацию)
шаг 3
Сгенерируйте ключ ssh, выполнив следующую команду:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
после выполнения этой команды он должен сгенерировать открытый ключ (.pub) и закрытый ключ в каталоге C: \ Users {имя пользователя здесь} .ssh
Шаг 4
Войдите в консоль управления aws и перейдите в IAM -> Пользователи -> Выбрать целевого пользователя -> Вкладка Учетные данные безопасности -> Ключи SSH для AWS CodeCommit и нажмите Загрузить ключ ssh. Скопируйте и вставьте содержимое открытого ключа, например C: \ Users {имя пользователя} .ssh \ id_rsa.pub, и сохраните изменения. Но вы можете выбрать другое имя для вашего ключа publc (id_rsa.pub) при использовании команды
ssh-keygen -t rsa -b 4096 -C "your_email@example.com".
шаг 5:
после загрузки открытого ключа скопируйте идентификатор ключа SSH.
ШАГ 6
создайте файл C: \ Users {здесь имя пользователя} .ssh \ config (без расширения файла, в Windows сохраните его как config и выберите опцию всех типов файлов. Config.txt, скорее всего, не будет работать). вставьте следующее содержимое в файл C: \ Users {здесь имя пользователя} .ssh \ config:
Host git-codecommit.*.amazonaws.com
User {copy SSH key ID here}
IdentityFile ~/.ssh/{copy name of the public key here }
Host git-codecommit.*.amazonaws.com
User THISISEXMAPLE123
IdentityFile ~/.ssh/id_rsa
Шаг 7.
git clone ssh://Your-SSH-Key-ID@git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo
Убедитесь, что файл конфигурации не сохранен как файл txt и используйте идентификатор ключа SSH, а не доступ
Изменения в конфигурации ядра AWS различаются. Возможно, вы правильно настроите все конфигурации, но у вас все еще будут проблемы с подключением. Чтобы быть прямым и явным.
Попробуйте изменить исходный URL-адрес git по умолчанию со старого на <KEY_ID>@git-codecomitxxxxxxxx/v1/repos/xxxxx, убедитесь, что ключевые службы являются пользователем-владельцем репозитория.
и снова нажать.
В моем случае я настроил~/.ssh/config
следующим образом
Host remote
HostName git-codecommit.us-east-1.amazonaws.com
User APLAY5AJ2VA0XEXAMPLE
IdentityFile ~/.ssh/id_rsa
и я пробовал клонировать с помощью команды
git clone ssh://git-codecommit.us-east-1.amazonaws.com/v1/repos/repo-name
и привело к отказу в разрешении.
но выполнив следующую команду, я выполнил задание.
git clone ssh://remote/v1/repos/repo-name
Проблема заключается в том, что Windows автоматически сохраняет файл конфигурации как config.txt на шагах 8–9 документации AWS.
Вы можете преодолеть это, следуя инструкциям ниже
- Откройте cmd
- cd Users\Mr.S>cd C:\Users\Mr.S.ssh (Здесь вы переходите в каталог .ssh, где находится файл config.txt)
- Введите copy config.txt config (здесь вы конвертируете файл config.txt в файл конфигурации с помощью функции копирования
После того, как вы сделали все вышеперечисленное, переходите к следующему шагу.