OpenSSH не учитывает $HOME при поиске файлов конфигурации ssh

OpenSSH не учитывает $HOME при поиске файлов конфигурации ssh

Я пишу несколько интеграционных тестов, которые проверяют 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жаловаться не будет. Но если он существует и его можно прочитать, он его включит. Это должно позволить вам проводить тесты, не слишком возясь с их файлами.

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

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