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:
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?
Narazil jsem na tuto otázku, když jsem se s touto chybou setkal. Nakonec jsem zjistil konfiguraci.
Nakonec jsem do MySQL WorkBench zadal následující.
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.
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.)
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
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 !!!
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
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).
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í.
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.
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.
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.
Č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í:
Vyzkoušejte připojení. Mělo by to být úspěšné, pak stiskněte OK.Viola!
Přišel jsem se stejnou chybou. Můj případ:
Tento problém jsem vyřešil po:
odebrat mysql-workbench-community
(dříve nainstalované prostřednictvím webu mysql):
Sudo apt odeberte mysql-workbench-community -y
nainstalujte mysql-workbench
Sudo apt nainstalujte mysql-workbench -y
přidat nové připojení
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)
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.
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.