Переадресация агента через разные имена пользователей (Git и развертывание)

Переадресация агента через разные имена пользователей (Git и развертывание)

Этот запрос не имеет прямого отношения к 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

Связанный контент