Я хочу подключиться к серверу баз данных Linux в частной подсети через Linux SSH Bastion Server, расположенный в общедоступной подсети. Еще хочу создать туннель на порт 3306.
Когда я пытаюсь создать SSH-соединение с сервера Bastion, я получаю сообщение «Permission Denied (publickey)». сообщение.
ssh -L 10.0.0.10:22:10.0.1.10:22 user@10.0.1.10
Вот результат отладки, где он не работает:
> debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug1: Trying private key: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).
Правильный открытый ключ уже находится на сервере БД, поэтому я думаю, мне нужно где-то ввести закрытый ключ RSA. Где мне ввести закрытый ключ? Также есть ли какие-либо изменения конфигурации sshd, необходимые для создания туннеля на 3306?
client <-----> Bastion Server <-----> Database Server
(10.0.1.10) (10.0.0.10)
Итак, попробуйте это:
$ ssh -C -N -L 3306:10.0.0.10:3306 user@10.0.1.10
а затем вы можете подключиться к серверу БД, выполнив:
$ mysql -u <user> -p -h localhost
Где мне ввести закрытый ключ?
По умолчанию ~/.ssh/
, но вы можете поместить куда угодно и указать с помощью -i
вариант.
Также есть ли какие-либо изменения конфигурации sshd, необходимые для создания туннеля на 3306?
Убедитесь, что линия AllowTcpForwarding
закомментирован или установлен на yes
.
Основная причина, по-видимому, связана с ключами ssh на хосте бастиона. Если вы не входите на хост-бастион как root (а вы не должны этого делать), то, возможно, у пользователя, которого вы входите в систему, нет домашнего каталога, и он пытается использовать домашний каталог root? если ты являются входя на хост-бастион как root, вам, вероятно, не следует этого делать.
Вы используете ssh-агент на исходном хосте? Взгляните на / etc / ssh / sshd_config на хосте бастиона. Если AllowAgentForwarding - «нет», попробуйте изменить его на «да» и перезапустить sshd. Если вы не используете ssh-agent на исходном хосте, вы можете подумать об этом, поскольку он будет хранить ваш ключ и позволять пересылать его на удаленные ssh-соединения (например, на хост-бастион).
Другой вариант - включить аутентификацию по паролю на машине БД, чтобы она не выходила из строя, когда не может выполнить аутентификацию с открытым ключом. Проверьте / etc / ssh / sshd_config на машине БД для проверки подлинности пароля и убедитесь, что он либо не установлен (по умолчанию «да»), либо установлен на «да».
Когда вы запускаете ssh, вы можете передать ему несколько аргументов -v, чтобы повысить уровень отладки. Иногда это помогает показать, в чем именно заключается проблема.