Этот запрос не имеет прямого отношения к Git, но поскольку одним из поддерживаемых Git транспортов является SSH, а я пытаюсь использовать переадресацию агента, я подумал, что стоит попросить разъяснений (страницы руководства меня подвели)
Я пытаюсь автоматизировать развертывание программного обеспечения с помощью Capistrano. Мне удалось устранить некоторые проблемные моменты (предварительная загрузка известных хостов, перед развертыванием и т. д.), но у меня осталась следующая ситуация.
Моя команда входит на сервер как они сами, отдельные учетные записи пользователей, все находятся в developers
группе, и umask
это 002
. Ничто из вышеперечисленного на самом деле не имеет значения, за исключением того, что цель состоит в том, чтобы убедиться, что моя команда всегда может работать как они сами, без необходимости иметь привилегии суперпользователя.
Подключаемся к серверу example.com
следующим образом ~/.ssh/config
:
Host example.com
User beaks
ForwardAgent yes
IdentityFile ~/.ssh/id_rsa_business
Первоначальный вход в систему проходит отлично, ssh example.com
открывается соединение с моей учетной записью пользователя, и все в порядке.
Проблема возникает на следующем этапе,
git ls-remote [email protected]:project/repository.git
Это использует вышеупомянутый транспортный уровень Git+SSH (см. ссылку выше) и обычно должно использовать мой ключ перенаправленного агента (который я проверил с помощью env | grep SSH_AUTH_SOCK
)
Ответ прост: «Ошибка аутентификации (открытый ключ), на другом конце неожиданно повесили трубку». Подозреваю, это связано с тем, что агент моего пользователя не используется, когда я обращаюсь к нему github.com
как общий git
пользователь.
Я также не могу исключить EC2
странности (политики безопасности и т. д.) - но в этом случае я бы ожидал тайм-аута или сбоя соединения. Я почти уверен, что я попал github.com
- и что они не пускают меня, потому что мой агент не предлагает мой beaks
ключ для их git
пользователя.
Буду рад добавить любую дополнительную информацию, если я что-то упустил.
решение1
Просто увидеть, что ssh-agent запущен, недостаточно. Посмотрите, присутствует ли нужный вам ключ ssh-add -L
Вы проверили, что этот ключ работает с другого хоста? Что ssh-add -L
печатает эта система?
Вы также можете запустить его GIT_TRACE=1 git ls-remote ...
, и он выведет команду ssh, которую он запускает. Вы можете вручную запустить команду ssh и заставить ее работать, прежде чем вводить git в игру.
решение2
На этот вопрос никто не ответилпоэтому людям, заходящим сюда, может быть полезно увидеть мой ответ на аналогичный вопрос.https://superuser.com/a/1141035/3376