Переменная среды psql для пароля sslkey?

Я подключаюсь к базе данных PostgreSQL 13.13, используя psql 13.14 на Mac. Я использую аутентификацию по сертификату клиента. Я установил переменные среды, включив правильные значения для PGSSLMODE, PGSSLROOTCERT, PGSSLCERT и PGSSLKEY.

Это означает, что мне нужно указать только хост, базу данных и пользователя в командной строке. Замечательно.

Но ключ SSL зашифрован, поэтому, когда я пытаюсь подключиться, psql запрашивает пароль ключа (обратите внимание, НЕ пароль пользователя БД, пароль для расшифровки ключа сертификата).

Я пробовал установить PGPASSWORD и PGSSLPASSWORD, пробовал добавить строку в ~/.pgpass, ничего из этого не помогло. Есть ли способ отправить пароль ключа SSL в psql, не вводя его? Я просмотрел документ env vars и документ файла паролей, но не увидел его.

Я спрашиваю, потому что, помимо того, что мне приходится время от времени вводить больше, из-за проблем со временем, я в конечном итоге ввожу пароль, и подсказка воспринимает его как команду, добавляя его в мою историю... Я бы лучше иметь где-нибудь файл, который либо является паролем, либо устанавливает переменную env для пароля, либо настраивает его один раз для входа в систему или что-то в этом роде.

Большое спасибо.

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
0
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не существует переменной среды для ключевой фразы SSL, возможно, по причине, которая послужила причиной предупреждения в документации о PGPASSWORD:

Использование этой переменной среды не рекомендуется по соображениям безопасности, поскольку некоторые операционные системы позволяют пользователям без полномочий root видеть переменные среды процесса через ps.

Что вы можете сделать, так это использовать ключевое слово sslpassword в строке подключения. Если вы не хотите вводить этот пароль снова и снова и не возражаете против хранения пароля в текстовом файле на диске, вы можете использовать файл службы подключения:

  • создайте файл .pg_service.conf в домашнем каталоге пользователя с содержимым

    [myconn]
    sslpassword=sömething_too_Ann0ying_to_type_every_time_you_connect
    
  • установите переменную среды PGSERVICE в myconn

Черт возьми, но спасибо. Поскольку вы помогаете, знаете ли вы, есть ли способ объявить переменные в служебном файле? Например, возможность использовать sslcert=$PROD_CERT или что-то в этом роде? Я прочитал документ, экспериментировал, но пока безрезультатно. Еще раз большое спасибо.

user3742898 28.03.2024 20:06

Нет, это не сработает. Но вы можете иметь несколько разделов в служебном файле и изменять переменную среды PGSERVICE по мере необходимости.

Laurenz Albe 29.03.2024 08:44

Другие вопросы по теме