Вопрос или проблема
Подсистема Windows для Linux на Windows 10 Professional с двумя программными пакетами:
- База данных PostgreSQL (“postgres” — это пользователь)
- Barman (“barman” — это пользователь).
Я пытаюсь установить аутентификацию на основе ключей между пользователями “postgres” и “barman” в WSL2. Я выполнил следующие шаги:
- Сгенерировал 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.
Вопрос:
Какие дополнительные настройки необходимы для достижения аутентификации на основе ключей между этими пользователями в WSL2?
.
Ответ или решение
SSH-ключевая аутентификация в Windows Subsystem for Linux (WSL2)
Введение
Windows Subsystem for Linux (WSL2) предоставляет возможность запуска Linux-дистрибутивов на Windows, что делает его популярным среди разработчиков и системных администраторов. В данной статье мы рассмотрим настройку SSH-ключевой аутентификации между пользователями "postgres" и "barman" в WSL2 для PostgreSQL и Barman.
Шаги по настройке SSH-ключевой аутентификации
Вы уже выполнили несколько ключевых шагов, и, судя по вашему описанию, вы на правильном пути. Давайте подробнее рассмотрим процесс, чтобы выявить возможные недочеты.
1. Генерация SSH-ключей
Вы сгенерировали ключи с помощью команды:
ssh-keygen -t rsa -b 4096
Убедитесь, что ключи сгенерированы корректно и сохранены в стандартных директориях (~/.ssh/
).
2. Копирование публичного ключа
Вы правильно скопировали публичный ключ пользователя "postgres" в файл authorized_keys
пользователя "barman":
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'
3. Проверка прав доступа
Вы отметили, что права доступа на файлы authorized_keys
установлены на 600 с помощью:
chmod 600 ~/.ssh/authorized_keys
Важно также установить правильные права на директорию ~/.ssh
:
chmod 700 ~/.ssh
4. Проверка конфигурации SSH
Убедитесь, что конфигурация SSH разрешает использование ключевой аутентификации. Для этого нужно проверить файл конфигурации SSH, который обычно находится по пути /etc/ssh/sshd_config
. Откройте его для редактирования (при необходимости с помощью прав sudo
):
sudo nano /etc/ssh/sshd_config
Найдите и убедитесь, что следующие параметры установлены:
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
Если вы внесли изменения, не забудьте перезапустить SSH-сервис:
sudo service ssh restart
5. Проверка логов SSH
Если после выполнения вышеуказанных действий вы всё ещё получаете запрос на ввод пароля, проверьте логи SSH для получения более детальной информации о проблеме:
sudo tail -f /var/log/auth.log
Это может дать информацию о том, почему аутентификация не проходит.
Заключение
После выполнения всех вышеуказанных шагов SSH-ключевая аутентификация между пользователями "postgres" и "barman" должна заработать. Если у вас продолжат возникать проблемы, проверьте наличие дополнительных настроек безопасности, таких как файрволлы или антивирусные программы, которые могут блокировать соединения.
Если вы соблюдали все рекомендации, а проблема сохраняется, возможно, имеет смысл пересоздать ключи и внимательно следить за процессом копирования публичных ключей.