
Я пишу несколько интеграционных тестов, которые проверяют SSH-соединения между серверами.
В настоящее время тесты запускаются с ноутбуков людей. Чтобы не лезть в пользователя (пользователя, запускающего тесты), ~/.ssh/config
я создаю временный каталог с ./tmp/.ssh/config
файлом, предназначенным специально для тестов. Затем я экспортирую HOME=/path/to/tmp
. К сожалению, я обнаружил, что openssh не использует $HOME
для поиска ssh-конфигурации или файлов идентификации.
Это нормально, если я подключаюсь по ssh напрямую к хосту, потому что я могу просто явно задать свою конфигурацию с помощью флага -F
. Однако, если я подключаюсь по ssh через bastion и у меня есть proxycommand, ssh
не передает этот файл конфигурации в proxycommand. Таким образом, если моя индивидуальная конфигурация ssh использует другое имя пользователя по умолчанию (например), эта конфигурация не будет использоваться для proxycommand.
Я «мог бы» также изменить proxycommand (чтобы принять файл конфигурации ssh в качестве аргумента), однако, я хотел бы знать, возможно ли заставить openssh искать файлы конфигурации/идентификации в другом месте, просто используя переменные среды (без необходимости передавать файл конфигурации каждой последующей команде). Я могу изменить свой ssh-agent с помощью , SSH_AUTH_SOCK
поэтому я надеялся, что смогу также изменить каталог файла конфигурации.
решение1
Согласно исходному коду, ssh
получает домашний каталог из файла паролей, а затем, если это не удается, из переменной среды HOME.
Что вы можете сделать, так это добавить Include
к каждому пользователю ~/.ssh/config
, скажем ~/tmp/user/.ssh/config
, .
Если включаемый файл не существует, ssh
жаловаться не будет. Но если он существует и его можно прочитать, он его включит. Это должно позволить вам проводить тесты, не слишком возясь с их файлами.
Обратите внимание, что это создает риск для безопасности. Любой, кто знает эти пути, сможет внедрить локальные конфигурации для других пользователей, если вы не защитите их должным образом.