it-swarm-eu.dev

Pokouší se použít MySQL Workbench s TCP / IP přes SSH - připojení se nezdařilo

V počítači MySQL Workbench se nemůžu připojit pomocí připojení TCP/IP přes SSH. Co se děje?

Vytvořil jsem databázi MySQL 5.1 na serveru Ubuntu mysql.myhost.com. Mám k němu přístup lokálně. MySQL Workbench (PC) nabízí navázat spojení pomocí TCP přes ssh.) Je spuštěn na portu 3306 na vzdáleném serveru, kde příkazový řádek mysql funguje dobře.

Použil jsem následující podrobnosti relace:

  • Způsob připojení: TCP/IP přes SSH.
  • Název hostitele SSH: mysql.myhost.com: 3306
  • Uživatelské jméno SSH: moje přihlašovací údaje pro linux
  • Soubor veřejného klíče SSH: můj místní soubor veřejného klíče
  • Název hostitele MySQL: 127.0.0.1 MySQL
  • Port serveru: 3306
  • Uživatelské jméno: root

Při pokusu o připojení se zobrazí chybová zpráva: „Nepodařilo se připojit k MySQL na 127.0.0.1:3306 pomocí tunelu SSH na mysql.myhost.com s rootem uživatele“

"Nelze se připojit k serveru MySQL na '127.0.0.1' (10061)"

Jako další test - zřídil jsem SSH tunel s portem 3306 pomocí PuTTY a mohu se připojit OK pomocí MySQL Workbench přes ten tunel, který předává připojení k mému lokálnímu 3306 ke vzdálenému serveru, jak je popsáno výše. Ale nemůžu si nechat "TCP/IP přes SSH" pracovat v Workbench.

Sekundární otázka: když Workbench požádá o „Cesta k souboru veřejného klíče SSH“, opravdu to nepotřebuje můj soubor soukromého klíče?

43
Dizzley

Narazil jsem na tuto otázku, když jsem se s touto chybou setkal. Nakonec jsem zjistil konfiguraci.

  1. Nedotkl jsem se nic v /etc/mysql/my.cnf, které již má bind_address = 127.0.0.1. Takže se může připojit pouze localhost.
  2. Používám OpenSSH server. Takže ve svém konfiguračním souboru/etc/ssh/sshd_config jsem změnil z ne na ano parametry odpovědné za TCP předávání, tedy - AllowTcpForwarding yes.
  3. Nakonec jsem do MySQL WorkBench zadal následující.

    • Název hostitele SSH: 192.168.0.8:22 (můj server SSH poslouchá port 22)
    • Uživatelské jméno SSH: sshuser
    • Soubor klíče SSH: * C:\Users\windowsuser\.ssh\id_rsa * (měl by to být soukromý klíč, i když se říká, že je veřejný)
    • Název MySQL: 127.0.0.1 (to by se nemělo měnit, protože server MySQL je ve výchozím nastavení vázán pouze na localhost, který jsem nezměnil)
    • Port MySQL Server: 3306 (také výchozí)
    • Uživatelské jméno: root

Zbývá vám pouze správně nakonfigurovat server SSH tak, aby pracoval spíše s klíči než s hesly. Doufám, že to někomu pomůže.

31
Eye

Myslím, že přístup TCP/IP přes SSH funguje tak, že navazuje „normální“ připojení SSH, které je základem připojení MySQL (stejným způsobem, jako byste použili tunel pomocí -L s klientem příkazového řádku OpenSSH).

Proto je třeba zadat připojení k serveru SSH na serveru, jehož prostřednictvím vytváříte tunel. Zdá se, že zde používáte mysql.myhost.com:3306, což by znamenalo, že tento SSH server (ne MySQL) používáte na portu 3306.

Je možné svázat MySQL server na 127.0.0.1:3306 a SSH server na vaší externí IP adrese pro mysql.myhost.com na portu 3306, ale to je velmi nepravděpodobné. Myslím, že váš server SSH poslouchá na portu 22 (výchozí).

Pravděpodobně byste měli použít mysql.myhost.com:22. (Zkontrolujte, zda se k němu můžete připojit prostřednictvím běžného klienta SSH, například PuTTY.)

8
Bruno

Možná budete muset zkontrolovat uživatele v tabulce mysql.user.

Spustit tento dotaz:

SELECT user,Host FROM mysql.user;

Měli byste vidět něco takového:

mysql> SELECT user,Host,password FROM mysql.user;
+------------------+-------------+-------------------------------------------+
| user             | Host        | password                                  |
+------------------+-------------+-------------------------------------------+
| root             | localhost   | *7A670E02260CDEEFF062DD08F3A6F6DA079998CB |
| ping             | %           | *124E1DB56CC8D6E2FEE8315BB2544BF04B980DB6 |
| admin            | 10.67.135.% | 1a6858054a41fede                          |
| icorbin          | 10.67.135.% | 366ed93a7396650e                          |
+------------------+-------------+-------------------------------------------+
4 rows in set (0.00 sec)

Prosím, všimněte si toho

  • root @ localhost se může přihlásit pouze z localhost.
  • ping @ '%' se může přihlásit přes TCP/IP
  • [email protected]% se může přihlásit přes TCP/IP pouze z tohoto netblocku
  • [email protected]% se může přihlásit přes TCP/IP pouze z tohoto netblocku

Pokud se chcete root připojit přes TCP/IP, musíte pro uživatele root zadat IP adresu nebo netblock.

Něco takového:

GRANT ALL PRIVILEGES ON *.* TO [email protected]'%' IDENTIFIED BY 'whateverpassword';

nebo pokud je heslo root stejné jako root @ localhost

GRANT ALL PRIVILEGES ON *.* TO [email protected]'%' IDENTIFIED BY PASSWORD '*7A670E02260CDEEFF062DD08F3A6F6DA079998CB ';

CAVEAT: root @ '%' není standardně doporučován. Možná zkuste [email protected]'10.% 'nebo jakýkoli jiný netblock pro root.

Pokusit se !!!

8
RolandoMySQLDBA

Možná používáte starší verzi MySQL Workbench a budete muset aktualizovat. Toto je chyba ve verzi 6.0.8, která je aktuálně verzí v úložištích Ubuntu. Aktualizace na verzi 6.3.6 mě vyřešila.

Stahování zde: http://dev.mysql.com/downloads/workbench/#downloads

3
Gleasonator

Jedna věc, která není uvedena v žádné jiné odpovědi, je význam formátu OpenSSH pro klíč, jak je uvedeno na SO ( https://stackoverflow.com/questions/34504232)/mysql-workbench-fail-to-connect-via-ssh-due-to-key/38108623 # 3810862 ).

Navzdory odpovědi tam jsem byl schopen použít klíč chráněný heslem s MySQL Workbench 6.3.7 (64 bit, Windows 10).

2
Thomas

Můj problém byl kvůli skutečnosti, že jsem se snažil použít ed25519 SSH klíč. Všiml jsem si této chyby na serveru SSH v auth.log:

sshd[25251]: Connection closed by 192.168.x.x [preauth]

Jakmile jsem přešel na klíč RSA, všechno fungovalo podle očekávání.

2
jbiz

Pokoušíte se připojit k serveru pomocí ssh, ale používáte port mysql. Port, který chcete, je cokoli, co váš server ssh poslouchá, obvykle 22, pak localhost a 3306 pro mysql název hostitele a port.

1
Justin Buser

Přišel jsem se stejnou chybou. Problém je „poněkud“ časový limit. Klikala jsem i hodnotu až 120 sekund, což nepomohlo.

V mém případě bych to mohl vyřešit pomocí nslookup myserver.com a pomocí IP adresy místo hostname. Můj předpoklad je problém při pokusu o připojení z IPv4 k IPv6.

1
Markus Zeller

Někdy klíče vytvořené PuTTY nebudou fungovat. Chcete-li vytvořit pár klíčů, použijte ssh-keygen v systému Linux. Zkopírujte obsah nového id_rsa do textového souboru ve Windows. Nezapomeňte přidat obsah id_rsa.pub do autorizovaných_keys v poli Linux. Všechny ostatní výchozí hodnoty v Workbench jsou v pořádku, včetně 127.0.0.1 pro MySQL Hostname. Samozřejmě to musí být standardní TCP/IP přes SSH.

1
mcmacerson

Čelil jsem stejnému problému. Zkontroloval jsem a pokusil se nastavit AllowTcpForwarding Yes, ale v mém sshd_config chyběl, takže žádná pomoc. ujistěte se, že název hostitele ssh je [~ # ~] není [~ # ~] stejný se jménem hostitele mysql (použijte localhost).

V pracovní desce zvolte + pro přidání nového připojení a nastavte následující:

  • metoda připojení: standardní TCP/IP přes SSH
  • Název hostitele SSH: 192.168.0.50:22 (umístit vzdálený IP server SSH a port (volitelné))
  • Uživatelské jméno SSH: sshuser
  • Můžete nastavit heslo nebo přidat na výzvu
  • Název hostitele MYSQL: localhost nebo 127.0.0.1
  • Port serveru MYSQL: 06
  • Můžete nastavit heslo nebo přidat na výzvu

Vyzkoušejte připojení. Mělo by to být úspěšné, pak stiskněte OK.Viola!

1
Reagan Ochora

Přišel jsem se stejnou chybou. Můj případ:

  • Ubuntu 18.04
  • mysql workbench 8.0.18
  • ssh přístup bez hesla (pouze prostřednictvím veřejných/soukromých ssh klíčů)

Tento problém jsem vyřešil po:

  1. odebrat mysql-workbench-community (dříve nainstalované prostřednictvím webu mysql):

    Sudo apt odeberte mysql-workbench-community -y

  2. nainstalujte mysql-workbench

    Sudo apt nainstalujte mysql-workbench -y

  3. přidat nové připojení

  4. klikněte na "Uložit v Keychain" pro mysql (nikoli pro uživatele ssh) a nastavte heslo
  5. klikněte na „Testovat připojení“
  6. po výzvě k zadání hesla nechte vstup prázdný a zaškrtněte „uložit heslo“
  7. klikněte na „OK“
0
ktretyak

Běh

SELECT user,Host FROM mysql.user;

A ujistěte se, že uživatel, který se pokoušíte přihlásit jako přes Workbench, ve sloupci Host uvedl localhost a ne %.

Pokud se říká %, opravte to:

UPDATE mysql.user SET Host="localhost" WHERE user="yourusername";

(Za předpokladu, že jste tohoto uživatele vytvořili pro práci s Workbench přes SSH nebo samozřejmě, protože výše uvedenému zabrání tomuto uživateli přihlásit se přes vzdálený TCP)

0
Nick

Dobře, vím, že se jedná o starou otázku, ale vytáhl jsem si vlasy celé hodiny. Zkontroloval jsem všechno, o čem se zmínili Bruno a Eye, a všechno to vypadalo dobře. Pak jsem si uvědomil, že to byla opravdu soukromá/veřejná klíčová věc. Takže jsem vystřelil Pageanta a přidal jsem svůj soukromý klíč, takže vytvořil veřejný klíč, který MySQL Workbench umí číst a volat, připojit! (Ve skutečnosti to bylo jaksi anticlimactic, když MySQL Workbench skutečně začal pracovat, ale šťastným způsobem.)

TLDR: Pomocí Pageant vygenerujte veřejný klíč z vašeho soukromého klíče.

0
Bonnie

Stejný problém se vyskytl na stroji Ubuntu, který se připojoval k serveru se systémem MySQL verze 5.5.29 a MySQL Workbench 5.2.40. Server SSH vyžaduje použití ssh-klíče.

Nemohl jsem se připojit k serveru MySQL pomocí root root, místo toho jsem musel vytvořit samostatného non-root uživatele, který bych použil pro přihlášení. Poté jsem se dokázal připojit v pohodě.

Snad to pomůže.

0
Kyle Coots