Вопрос или проблема
Я установил Windows Subsystem for Linux на машине с Windows 10 Pro. Я установил два пакета программного обеспечения:
- Пакеты базы данных PostgreSQL, для которых “postgres” является пользователем.
- Пакеты Barman, для которых “barman” является пользователем.
Я пытаюсь установить “SSH-аутентификацию без пароля” между пользователями “postgres” и “barman” в WSL2 на моей машине с Windows 10 Pro. Я следовал этим шагам:
- Сгенерировал SSH-ключи (4096 бит) для обоих пользователей с помощью ssh-keygen -t rsa -b 4096.
- Скопировал открытый ключ пользователя “postgres” в файл authorized_keys пользователя “barman” по адресу /var/lib/barman/.ssh/authorized_keys.
- Повторил процесс для пользователя “barman”, скопировав их открытый ключ в файл authorized_keys пользователя “postgres”.
Однако, когда я пытаюсь подключиться от имени пользователя “barman” с помощью ssh postgres@, меня все еще запрашивают пароль пользователя “postgres”.
Вещи, которые я проверил:
- Разрешения файлов authorized_keys установлены на 600 (chmod 600 ~/.ssh/authorized_keys).
- SSH-сервис работает на WSL2.
Вопрос:
Какие дополнительные настройки могут быть необходимы для достижения “SSH-соединения без пароля” между этими пользователями в WSL2?
Ответ или решение
Для успешного установления "безпарольного SSH" соединения между пользователями PostgreSQL (postgres) и Barman (barman) в WSL2 (Windows Subsystem for Linux) на вашем компьютере с Windows 10 Pro, вам необходимо учитывать несколько важных аспектов. Давайте подробно разберем возможные причины неполадки и шаги для их устранения.
Проверьте ключи SSH
-
Генерация ключей: Вы написали, что использовали команду
ssh-keygen -t rsa -b 4096
, которая создаст приватный и публичный ключи в папке~/.ssh/
. Убедитесь, что вы сгенерировали ключи для обоих пользователей и что они были созданы корректно. Для этого выполните:ls -l ~/.ssh
Вы должны увидеть файлы
id_rsa
(приватный ключ) иid_rsa.pub
(публичный ключ) для каждого пользователя. -
Копирование публичных ключей: Убедитесь, что вы корректно скопировали публичные ключи в файлы
~/.ssh/authorized_keys
соответствующих пользователей:Для
postgres
:cat ~/.ssh/id_rsa.pub | ssh barman@localhost 'cat >> ~/.ssh/authorized_keys'
Для
barman
:cat ~/.ssh/id_rsa.pub | ssh postgres@localhost 'cat >> ~/.ssh/authorized_keys'
Проверьте права доступа
-
Правильные права на файлы и директории: Убедитесь, что права доступа к папке
~/.ssh
и файлам в ней установлены корректно. Выполните следующие команды для обоих пользователей:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Получение разрешений
700
для папки~/.ssh
и600
для файлаauthorized_keys
критически важно для SSH. Если эти настройки не выполнены, SSH может отклонить ключи.
Конфигурация SSH
-
Настройка SSH Daemon: Убедитесь, что конфигурация SSH Daemon (обычно файл
/etc/ssh/sshd_config
) настроена для разрешения аутентификации по ключу. Проверьте настройки:PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
Если вы внесли изменения, не забудьте перезапустить SSH сервис:
sudo service ssh restart
-
Проверка SSH-клиента: Иногда полезно выполнить команду SSH с повышенной диагностикой. Используйте флаг
-v
для получения дополнительной информации о процессе аутентификации:ssh -v barman@localhost
Это может дать представление о том, где может происходить сбой.
Возможные дополнительные шаги
-
Проверка SELinux/AppArmor: Если у вас активированы SELinux или AppArmor, они могут блокировать вызовы SSH. Убедитесь, что эти службы настроены правильно или временно отключите их для проверки.
-
Использование IP-адреса: Попробуйте использовать IP-адрес вместо
localhost
для подключения. Иногда могут возникать проблемы с разрешением хостов в WSL2.
Заключение
После выполнения всех вышеуказанных шагов проблема с "безпарольным SSH" соединением между пользователями PostgreSQL (postgres) и Barman (barman) в WSL2 должна быть решена. Если проблема все еще сохраняется, возможно, стоит проверить системные журналы (например, /var/log/auth.log
) на наличие ошибок, связанных с SSH-аутентификацией. Удачи вам в решении этой задачи!