Неможливо підключитися до бази даних MySQL через SSH за допомогою Workbench


10

Я намагаюся підключитися до своєї бази даних через тунелювання SSH з одного з наших серверів веб-додатків за допомогою MySQL Workbench. Ось основна конфігурація; зауважте, що я змінив деякі значення на скріншоті з міркувань безпеки.

Скріншот верстака

Проблема полягає в тому, що кожного разу, коли я намагаюся підключитися через тунель SSH з одного з наших серверів додатків, я отримую таку помилку:

Не вдалося підключитися до us-east-1.amazonaws.com через тунель SSH на computer.amazonaws.com з користувачем social_shop_prod. Не вдається підключитися до сервера MySQL на 127.0.0.1.

Однак якщо я використовую ті самі облікові дані для SSH через наступний командний рядок:

mysql -u social_shop_prod -h us-east-1.amazonaws.com -p

Я можу успішно підключитися та отримати інтерактивний командний рядок MySQL.

Тут говорили з рештою моєї команди розробників, і ніхто з нас не може зрозуміти, чому я не можу пройти тунель над SSH з наших серверів додатків з Workbench; але коли я SSH на одному з наших серверів додатків і підключаюся до MySQL за допомогою командного рядка; Я можу успішно підключитися.

І чому він намагається підключити понад 127.0.0.1? Я не вказав це в конфігурації; також мій файл хостів не переспрямовує домени, показані нижче, на цей IP.

Будь-який конструктивний внесок дуже вдячний.

Відповіді:


5

Оскільки ви підключаєтесь через тунель SSH, це означає, що порт MySQL 3306 з us-east-1.amazonaws.com відкривається локально на вашому комп'ютері. IP-адреса вашого комп'ютера - 127.0.0.1 або localhost. Коли ви підключаєтесь до сервера mysql на us-east-1.amazonaws.com, ви фактично отримуєте доступ до нього через 127.0.0.1, тобто ваш комп'ютер. Якщо у вас був відкритий інший тунель або на вашому комп’ютері локально запущений MySQL, можливо, це інший сервер MySQL, який відкидає ваші спроби аутентифікації

Ви можете спробувати кілька тестів:

1. Які порти ви слухаєте на комп’ютері Windows

З командного рядка: netstat -a (перераховує всі відкриті порти)

У Linux це було б: netstat -tlpn

2. Основний тест на підключення

З командного рядка DOS або консолі Linux: telnet 127.0.0.1 3306

Якщо у вас вийшов тайм-аут або реагує якась інша програма, ваш тунель налаштований неправильно.

3. Змініть номер порту, який MySQL Workbench відкриває локально

Ми припускаємо, що робочий стіл MySQL створює тунель на вашому комп’ютері. Якщо так, на робочому столі MySQL спробуйте пройти тунель через інший номер порту, наприклад 9000.

Переконайтесь, що 9000 не вказано як відкритий порт від: netstat -a

Якщо у вас є ssh доступ до us-east-1.amazonaws.com

4. Спробуйте підключитися до MySQL від us-east-1.amazonaws.com

mysql -u myuser -h 127.0.0.1 -p

І як сказав Роландо, ви хочете переконатися, що ви підключаєтесь до потрібних облікових даних. Наприклад, якщо ви підключаєтесь як myuser@127.0.0.1 і у вас є користувач myuser без хоста, ви, ймовірно, не зможете підключитися за допомогою user@127.0.0.1.


2

Причина контакту з 127.0.0.1 полягає в тому, що тунель з'єднує порт локальної машини з віддаленим хостом. Здається, повідомлення вказує на те, що з'єднання SSH не здійснюється.

Спробуйте це з командного рядка:

ssh -L 33000:remotehost:3306 user@remotehost

Переконайтесь, що SSH дозволяє переадресовувати порти; якщо ви отримаєте повідомлення про те, що вказувати, що пересилання не було дозволено або було відмовлено, то саме тому.

Щоб виправити це, вам доведеться змінити конфігурацію сервера; додати цю конфігурацію на сервер SSH:

AllowTcpForwarding yes

Не забувайте перезапустити сервер, щоб активувати цю конфігурацію.


Ви можете трохи пояснити цю команду? ви прив'язуєте адресу? Чи можна це поєднувати з командами mysql?
Тюфір

З SSH тут ви налаштовуєте тунель, нічого більше. Він підключає віддалений порт до локального порту. У цьому випадку ви прив'язуєте локальний порт до віддаленого порту MySQL.
Май

1

Я продовжував займатися цією проблемою майже 2 тижні, тепер мені вдалося її встановити. Я опублікую його тут, щоб більше людей могли його спробувати.

Гаразд, я використовую OpenSSH (Win10 рідний) та Workbench 8.

Покрокове виконання:
1. Додайте хост-ключі SSH до агента за допомогою ssh-add.
2. Створюйте пари ключів за допомогою ssh-keygen. У моєму випадку ці файли переходять автоматично до Users/myUser/.sshконфігурації установки.
3. Додайте відкритий ключ до файлу санкціонованих_кейсів (який у моєму випадку повинен знаходитись на шляху встановлення вашого сервера Windows/System32/OpenSSH/.ssh) без розширень.
4. Додайте створені ключі, які ви тільки що зробили для агента, використовуючи ssh-add.

Наведені вище дії в значній мірі конфігурація командного рядка SSH Server, який, я думаю, що ОП вже зробив для його з'єднання, працює через термінал. Щоб налаштувати MySQL Workbench 8, ви майже точно робите те саме, за винятком того, що ви повинні перетворити private_key.pem у формат OpenSSH, перш ніж переміщувати їх у Users/myUser/.sshтаOpenSSH_instalation_path/.ssh

  1. Перетворити private_key.pem у формат OpenSSH за допомогою PUTTYgen.
  2. Скопіюйте "Публічний ключ для вставки у поле з дозволеними ключами OpenSSH" .
  3. Збережіть відкритий ключ у папках User/myUser/.sshтаOpenSSH_instalation_path/.ssh
  4. Вставте ключ, який ви скопіювали з PUTTY, у файл дозволених ключів у OpenSSH_instalation_path/.sshпапці.
  5. Експортуйте ключ формату OpenSSH в User/myUser/.ssh.
  6. Перезапустіть служби sshd та mysql
  7. Налаштуйте Workbench для підключення до SSH-сервера за допомогою перетвореного приватного ключа.

ОНОВЛЕННЯ: Вам потрібно буде встановити наступне у вашому файлі sshd_config:

PermitRootLogin без пароля
PubkeyAuthentication так
PasswordAuthentication no
PermitEmptyPasswords ні
AllowTcpПереміщення так

БУДЬ ЛАСКА, ПРОЧИТАЙТЕ:

Я недосвідчений аналітик, тому якщо більш досвідчений користувач знає, яка з двох .ssh папок є правильною, скажіть, будь ласка. Я вважаю OpenSSH свого роду неоднозначним.
Це працювало для мене під час встановлення середовища місцевого розвитку, використовуючи лише localhost. Просто з метою навчання.
Ви можете додати myUser @ localhost до користувачів MySQL Workbench перед тестуванням з'єднання.
Якщо це дійсно потрібно, я можу додати зображення.


0

У моєму випадку проблему мені довелося переключити на дійсне доменне ім’я або IP замість власного хоста, який локально вирішено.

Помилка вирішення користувальницького хоста ( /etc/hosts)

Я працюю з механізмом вирішення локальних хостів, який визначав:

#.#.#.#    my-vm

Чомусь с MySQL 5.2.47 на Linux Mint 14 (Nadia)який схожий Ubuntu 12.10 (Quantal)на механізм дозволу не працює .

Рішення

Просто перейдіть на загальнодоступне ім’я, наприклад my-website.comвирішити проблему.


@Mat зафіксовано, ніжjj = ks
Едуард Лопес


0

У мене була подібна проблема, і це може бути очевидним, але перевірте правила брандмауера в AWS. У мене встановлений діапазон IP для обмеження з'єднань із зовнішнім світом. І IP в моєму офісі змінився, тому він вийшов за межі IP-діапазону. Мій колега в іншому офісі все-таки міг підключитися, тому я подумав, що проблема в моєму ПК, але проблема була в правилах брандмауера в AWS. Сподіваюся, що хтось допомагає :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.