# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
по умолчанию ubuntu создаёт примерно такого смысла pg_hba.conf
Обращу отдельное внимание, что первой строкой идёт peer авторизация именно для postgres'а и это будет плохая мысль её ломать.
sudo -u postgres psql
здесь вы зашли от unix пользователя postgres и запустили psql, имя unix пользователя совпадает с именем пользователя базы - это достаточное условие для прохождения peer аутентификации, вы получили доступ к базе. Это обычный вариант использования суперпользователя базы (dba впрочем чаще делают sudo -iu postgres, т.к. нужен не только psql)
sudo psql -U postgres -d testdb
Здесь вы хотите запустить psql от рута и авторизоваться пользователем postgres. "postgres" != "root", поэтому peer аутентификация не пускает авторизацию. То что root это root операционной системы не очень интересует postgresql, делает то что сказано в pg_hba (и pg_ident, но это тема отдельного обсуждения)
sudo здесь совершенно лишний и не выполняет никакого смысла.
Изменение
host all all 127.0.0.1/32 md5
эффекта не имеет, потому что host тип подключения для TCP/IP подключений, а по-умолчанию psql подключается по unix sock.
psql -h 127.0.0.1 форсирует подключение по TCP/IP
задал пароль вручную через passwd, проверил - зашел пользователем postgres через ssh - пускает
Пользователь ОС не имеет отношения к пользователю внутри СУБД, это разные сущности.
Пароль postgres пользователя базы можно изменить через psql командой \password
Тем не менее,
sudo -u postgres psql
достаточно для административного доступа. Не работайте от суперпользователя постоянно.