Пересылать входящий ssh-запрос на разные порты

Мне нужно пересылать входящие ssh-запросы, если возможно, вот так:

sshRequest приходит на общедоступный IP-адрес сервера на порт 21 (если возможно, он предоставляет дополнительный идентификатор поля) но независимо от того, что я делаю, я получаю базовый сбой аутентификации, похожий на неверный пароль, без регистрации нигде, чтобы получить более полное представление о проблеме. Мои шаги для воспроизведения:

Убедитесь, что аутентификация IAM включена в экземпляре RDS.

Создайте роль db_user_test с политикой RDSFullAccess и следующей встроенной политикой:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": "rds-db:connect",
        "Resource": "arn:aws:rds:us-west-1:##########:db:foo_bar_instance/db_user_test"
    }
]
}

Отметьте тестовый экземпляр ec2 с ролью.

Войдите в экземпляр RDS и разрешите гранты:

mysql> CREATE USER db_user_test IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT USAGE ON *.* TO 'db_user_test'@'%'REQUIRE SSL;
Query OK, 0 rows affected (0.01 sec)

mysql> show grants for 'db_user_test'@'%';
+------------------------------------------------------+
| Grants for db_user_test@%                            |
+------------------------------------------------------+
| GRANT USAGE ON *.* TO 'db_user_test'@'%' REQUIRE SSL |
+------------------------------------------------------+
1 row in set (0.00 sec)

mysql>

Сгенерируйте токен и попытайтесь аутентифицироваться:

[root@ip-10-101-115-129 ~]# bash -x test_auth_new.sh
+ RDSHOST=foo.bar.us-west-1.rds.amazonaws.com
++ aws rds generate-db-auth-token --hostname foo.bar.us-west-1.rds.amazonaws.com --port 3306 --username db_user_test
+ TOKEN='foo.bar.us-west-1.rds.amazonaws.com:3306/?TOKEN_HERE'
+ SSL_CERT=/root/rds-combined-ca-bundle.pem
+ mysql --host=foo.bar.us-west-1.rds.amazonaws.com --port=3306 --verbose --ssl-ca=/root/rds-combined-ca-bundle.pem --ssl-mode=VERIFY_IDENTITY --user=db_user_test '--password=foo.bar.us-west-1.rds.amazonaws.com:3306/?TOKEN_HERE' --enable-cleartext-plugin
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'db_user_test'@'10.101.115.129' (using password: YES)

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

0
задан 25 May 2018 в 20:56
1 ответ

Проблема аутентификации решена. Я определил с помощью флага --debug, выдающего команду генерации aws rds -db-auth-token, что клиент использовал найденный .aws/config профиль, который отличался от того, что требовалось для входа в систему. Удаление этой конфигурации и переформатирование встроенной политики для правильной идентификации ресурса, исправленного этой проблемой, и теперь я могу аутентифицироваться в своем RDS экземпляре с помощью auth маркера.

0
ответ дан 5 December 2019 в 06:01

Теги

Похожие вопросы