3

В настоящее время я пытаюсь получить доступ к GitHub для клонирования хранилища с SSH.

Однако, когда я ввожу URL для клонирования, сервер зависает после Initialized empty Git repository in /export/home/nathan/myrepo следующим образом:

$ git clone git@github.com:v6/myrepo.git
Initialized empty Git repository in /export/home/nathan/myrepo/.git/

ssh-add -l показывает несколько идентификаторов.

2048 <fingerprint> /home/vagrant/.ssh/id_rsa (RSA)
2048 <fingerprint> production-infrastructure.pem (RSA)

Я добавил открытые ключи для обоих вышеперечисленных в мою учетную запись GitHub.

Однако, когда я пытаюсь ssh -T git@github.com , я получаю что-то вроде следующего:

Hi otheruser1998! You've successfully authenticated, but GitHub does not provide shell access.

Я не otheruser1998 .

Я думаю , что GitHub может связать ключ production-infrastructure.pem с otheruser1998 чья учетная запись уже есть этот ключ.

Как отключить ключ production-infrastructure.pem от ssh-agent?

Если это не сработает, могу ли я указать ключ для использования git?

Поскольку оба эти ключа пересылаются с моей локальной машины разработки, я не могу просто указать свой файл ключей в ~/.ssh/config , как популярный ответ на вопрос Как определить git, какой закрытый ключ использовать? рекомендую.

Также я не могу использовать ssh-add -d production-infrastructure.pem для удаления ключа, поскольку, опять же, требуется указать локальный путь к файлу ключа: http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD тока /man1 / SSH-add.1

Название вопроса кажется немного неуклюжим. Пожалуйста, отредактируйте. Я возьму любую помощь, которую смогу получить, чтобы прояснить ситуацию. Однако конечная цель - покончить с ситуацией, которая заставляет меня столкнуться с этой тихой ошибкой клонирования git clone , клонировать мой репозиторий и продолжать жить.

1 ответ1

0

Вы можете убить ssh-agent, но это помешает вам перезагрузить production -structure.pem (так как кажется, что он не доступен локально) после того, как вы закончите.

В качестве альтернативы вы можете использовать переменную окружения $ GIT_SSH, чтобы указать программу, которую git должен использовать для ssh. Вам необходимо создать новый сценарий оболочки со следующими двумя строками:

#!/bin/bash
ssh -i /home/vagrant/.ssh/id_rsa $*

Я бы сохранил это как ~/bin/githubssh в режиме 555. (К сожалению, это необходимо, потому что git не выполняет синтаксический анализ аргумента в переменной окружения GIT_SSH, он пытается вставить все это в argv [0], когда он собирается выполнить программу SSH.)

Затем, когда пришло время оформить заказ:

$ GIT_SSH=~/bin/githubssh git clone git@github.com:v6/myrepo.git

Это установит переменную среды GIT_SSH только для этой команды git.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .