Проблемы с ssh-agent при работе на heroku

У меня есть приложение Rails, использующее докер, которое выполняет некоторые автоматические изменения в другом приложении, а затем git отправляет изменения в GitHub. Мне потребовалось немного времени, чтобы получить свои ssh-ключи в контейнере докеров, в каком-то таком же поместье (не доволен им полностью, но изменю его после того, как разберусь с этим). Моя проблема сейчас в том, что при запуске клонов git в Dockerfile все в порядке, но затем из моего кода rails он не сообщает, что у меня нет доступа, поэтому в коде я перехожу к повторному ssh-добавлению ключей . Однако затем он говорит, что Could not open a connection to your authentication agent., поэтому я пытаюсь повторно инициализировать ssh-agent (echo $(ssh-agent -s)), что, похоже, успешно, но все еще не работает на ssh-add.

Если я подключусь по SSH и попробую выполнить эти шаги, он будет работать нормально, но если я подключу консоль и запущу функции, которые запускают эти консольные вызовы, произойдет сбой с той же проблемой. Тогда кажется, что вызов ssh-agent для установки переменных env не установлен. У меня такое ощущение, что контейнеры heroku не позволяют изменять переменные env без прохождения через их heroku config:set, но это невозможно, поскольку каждый процесс будет иметь разные SSH_AUTH_SOCK и SSH_AGENT_PID. Любые предложения о том, как с этим справиться, будут огромным подспорьем.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
127
2

Ответы 2

Эта ошибка обычно возникает, когда у вас не запущен активный агент SSH.

Could not open a connection to your authentication agent.

Это довольно часто встречается в системах на основе Debian, тогда как в большинстве Ubuntu она работает постоянно.

Чтобы это исправить, вам просто нужно запустить нового агента.

eval $(ssh-agent)

Это должно быть выполнено до ssh-add.

Сообщите мне, если это не сработает. SSH в контейнере Docker иногда может быть настоящей проблемой.

Praveen Premaratne 31.12.2018 23:54

Я уже сделал это, но кажется, что настройки переменных среды, которые выполняет eval $ (ssh-agent), не остаются, когда я проверяю их снова, они остаются пустыми.

ndilucca 01.01.2019 22:49

Какой базовый образ вы используете и поставляется ли он с предустановленным OpenSSH?

Praveen Premaratne 03.01.2019 16:19

Я обеспечиваю его установку, и он запускается, он возвращает PID агента и все остальное, просто вары ENV не остаются. Я думаю, это может быть в основном проблема героку?

ndilucca 04.01.2019 19:40

Это похоже на то, как Ruby обрабатывает SSH. Похоже, Ruby использует встроенную библиотеку SSH вместо агента SSH по умолчанию в системе. К сожалению, я не являюсь экспертом в Heroku, чтобы дать точный ответ, но пробовали ли вы heroku run bash вместо heroku run console, чтобы узнать, подхватывает ли он агента?

Praveen Premaratne 04.01.2019 20:39

В вашей текущей настройке вам необходимо оценить риск / стоимость использования закрытого SSH-ключа, защищенного кодовая фраза.

Как и упомянутый здесь, для автоматизированного процесса рекомендуется использовать ключ без парольной фразы, если вы уверены, что нет простого способа получить доступ к указанному закрытому ключу.

@ndilucca Тогда он не должен вас ни о чем просить, если только вы не зарегистрировали должным образом открытый ключ на удаленной стороне или ... вы использовали неправильный формат закрытого ключа: см. stackoverflow.com/a/53645530/6309

VonC 01.01.2019 23:18

Он отлично работает, если я подключаюсь к серверу по ssh и запускаю команды вручную, что означает, что мои ключи в порядке и работают. Проблема возникает только тогда, когда я запускаю код из ruby, мой код запускает все команды bash через ruby. Если я запускаю рубиновую консоль на сервере heroku, даже просто устанавливая env var, она не сохраняется.

ndilucca 02.01.2019 04:49

@ndilucca Хорошо, но зачем тогда упоминать ssh-agent? Разве это не нужно только для ключей, защищенных парольной фразой?

VonC 02.01.2019 06:35

Другие вопросы по теме