Проблема с SSH: сценарий развертывания Codeship на моем сервере не может получить данные из Github

У меня есть репозиторий, подключенный к Codeship, который запускает тесты, а затем, наконец, запускает скрипт на моем сервере через SSH:

ssh [email protected] '/var/www/deploy-script.sh'

На моем сервере у меня настроен пользователь deploy. У меня есть открытый ключ этого пользователя, хранящийся в моей учетной записи github. У меня также есть открытый ключ codeship для моего проекта, хранящийся в ~/.ssh/authorized_keys.

Внутри deploy-script.sh я перехожу к каталогу репо, а затем пробую git pull. Очевидно, мне нужно, чтобы последний код был извлечен без пароля, поскольку он выполняется на виртуальной машине на codeship. Codeship, по-видимому, может подключиться к моему серверу по SSH и запустить сценарий развертывания, однако в журнале сообщается:

> Pull updates from Github.
Permission denied (publickey).
fatal: Could not read from remote repository.

Если я войду на свой сервер как пользователь deploy и запущу скрипт нормально, git pull будет работать правильно.

Что мне не хватает? Почему github не разрешает доступ, когда он входит в систему как пользователь развертывания, а не я?


person Darryl Snow    schedule 26.02.2016    source источник


Ответы (1)


Кажется, я упустил из виду, что ssh-agent не сохранялся между сеансами входа в систему, поэтому в следующий раз, когда я вошел в систему как пользователь развертывания, я также получил ошибку отказа в доступе. Мне пришлось ssh-add снова, прежде чем моя личность была добавлена, и я мог получить данные с github. Чтобы сохранить его, я следовал инструкциям здесь: Добавить постоянный закрытый ключ с помощью ssh-add в Ubuntu

В ~/.ssh/config добавлено следующее:

IdentityFile ~/.ssh/deploy-key
person Darryl Snow    schedule 26.02.2016