Похоже, у меня есть небольшое несоответствие между поведением ssh-agent для двух учетных записей, которые я настроил.
Я написал простой сценарий мониторинга, чтобы проверить доступность некоторых виртуальных машин, которые у нас есть. Я провел все тестирование и отладку с моей основной учетной записью. В процессе я сгенерировал пару ключей SSH, запустил ssh-agent и добавил идентификатор к агенту, чтобы сценарий мог использовать ssh без пароля.
Теперь я хотел бы запустить этот сценарий как пользователь учетной записи службы. Я создал учетную запись службы и для генерации ключей временно установил оболочку входа в / bin / bash. Я сгенерировал свои ключи, удалил кодовую фразу и добавил удостоверение агенту.
Несоответствие, похоже, связано с тем, как оболочка подключается к агенту. В моей учетной записи мне не пришлось перезапускать агент с тех пор, как я начал тестирование (около двух недель). Но когда я пытаюсь запустить сценарий под учетной записью службы, мне кажется, что каждый раз мне приходится перезапускать агент, добавлять удостоверение и затем выполнять работу.
В идеале я бы хотел, чтобы агент работал бесконечно и чтобы учетная запись службы автоматически подключалась к нему при каждом запуске сценария, поэтому мне не нужно управлять процессами внутри сценария. Я просмотрел конфигурации каждой учетной записи и не нашел никаких различий. Приветствуется любое понимание.
** Изменить: я забыл указать, что агент работает постоянно, но процессы оболочки для учетной записи службы, похоже, не используют его, и нужно начать новую:
ovmmon 14043 0.0 0.0 53916 204 ? Ss May17 0:00 ssh-agent
ovmmon 14952 0.0 0.0 53916 204 ? Ss May17 0:00 ssh-agent
Здесь происходит одно из двух:
Вы можете проверить, в каком именно случае, выполнив ps -ef и проверив ssh-agent.
Если ssh-agent мертв, вам нужен способ сохранить его в рабочем состоянии. Вот три способа сделать это:
Если ssh-agent не мертв, но вы потеряли информацию о среде, убедитесь, что при запуске он записывает свои переменные среды в определенный файл. Затем, при входе в систему, получите этот файл в своей оболочке.
Если вы используете метод вызова суб-оболочки, ssh-agent умирает при выходе из оболочки. Если вы используете метод eval, оболочка будет работать до тех пор, пока не завершится вручную.
Видеть: http://docstore.mik.ua/orelly/networking_2ndEd/ssh/ch06_03.htm
В частности: http://docstore.mik.ua/orelly/networking_2ndEd/ssh/ch06_03.htm#ch06-50031.html
Кроме того, я знаю, что при запуске из cron переменные ENV могут вызывать проблемы. Так что это еще одна область для проверки.