it-swarm.it

Tentativo di utilizzare MySQL Workbench con TCP / IP su SSH: impossibile connettersi

Non riesco a collegarmi utilizzando la connessione TCP/IP su SSH in MySQL Workbench da un PC. Cosa sta succedendo?

Ho creato un database MySQL 5.1 su un server Ubuntu mysql.myhost.com. Posso accedervi localmente. MySQL Workbench (PC) offre di stabilire una connessione tramite TCP su ssh. Funziona sulla porta 3306 sul server remoto dove mysql da riga di comando funziona bene.

Ho usato i seguenti dettagli della sessione:

  • Metodo di connessione: TCP/IP su SSH.
  • Nome host SSH: mysql.myhost.com: 3306
  • Nome utente SSH: il mio login linux
  • File di chiave pubblica SSH: il mio file di chiave pubblica locale
  • Nome host MySQL: 127.0.0.1 MySQL
  • Porta del server: 3306
  • Nome utente: root

Ricevo un messaggio di errore quando provo a connettermi: "Impossibile connettermi a MySQL a 127.0.0.1:3306 attraverso il tunnel SSH su mysql.myhost.com con l'utente root"

"Impossibile connettersi al server MySQL su '127.0.0.1' (10061)"

Come altro test: ho impostato un tunnel SSH con la porta 3306 usando PuTTY e posso collegarmi OK usando MySQL Workbench attraverso quel tunnel che inoltra le connessioni al mio 3306 locale al server remoto come descritto sopra. Ma non riesco a far funzionare "TCP/IP over SSH" in Workbench.

Domanda secondaria: quando Workbench chiede "Percorso del file della chiave pubblica SSH" non ha davvero bisogno del mio file della chiave privata?

43
Dizzley

Mi sono imbattuto in questa domanda quando io stesso avevo riscontrato questo errore. Finalmente sono riuscito a capire la configurazione.

  1. Non ho toccato nulla in /etc/mysql/my.cnf che ha già bind_address = 127.0.0.1. Quindi solo localhost può connettersi.
  2. Uso il server OpenSSH. Quindi nel suo file di configurazione/etc/ssh/sshd_config sono passato da no a yes il parametro responsabile di TCP forwarding, quindi - AllowTcpForwarding yes.
  3. Finalmente ho inserito quanto segue in MySQL WorkBench.

    • Nome host SSH: 192.168.0.8:22 (il mio server SSH ascolta la porta 22)
    • Nome utente SSH: sshuser
    • File chiave SSH: * C:\Users\windowsuser\.ssh\id_rsa * (dovrebbe essere una chiave privata, anche se è pubblica)
    • Nome host MySQL: 127.0.0.1 (questo non dovrebbe essere cambiato, dal momento che il server MySQL per impostazione predefinita è associato solo a localhost che non ho modificato)
    • Porta del server MySQL: 3306 (anche predefinito)
    • Nome utente: root

L'unica cosa rimasta per te è configurare correttamente il tuo server SSH affinché funzioni con le chiavi anziché con le password. Spero che questo possa aiutare qualcuno.

31
Eye

Penso che l'approccio TCP/IP su SSH funzioni stabilendo una "normale" connessione SSH alla base della connessione MySQL (allo stesso modo in cui faresti tunnel usando -L con il client da riga di comando OpenSSH).

Pertanto, è necessario specificare una connessione a un server SSH sul server tramite il quale si sta stabilendo il tunnel. Qui, sembra che tu stia usando mysql.myhost.com:3306, il che implicherebbe che stai eseguendo questo server SSH (non MySQL) sulla porta 3306.

È possibile associare un server MySQL su 127.0.0.1:3306 e un server SSH sul tuo indirizzo IP esterno per mysql.myhost.com sulla porta 3306, ma è molto improbabile. Suppongo che il tuo server SSH sia in ascolto sulla porta 22 (impostazione predefinita).

Probabilmente dovresti usare mysql.myhost.com:22. (Verifica di poterti connettere ad esso tramite un normale client SSH come anche PuTTY.)

8
Bruno

Potrebbe essere necessario controllare gli utenti nella tabella mysql.user.

Esegui questa query:

SELECT user,Host FROM mysql.user;

Dovresti vedere qualcosa del genere:

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)

Si prega di notare che

  • root @ localhost può accedere solo da localhost.
  • ping @ '%' può accedere tramite TCP/IP
  • [email protected]% può accedere tramite TCP/IP solo da quel netblock
  • [email protected]% può accedere tramite TCP/IP solo da quel netblock

Se si desidera che root si connetta tramite TCP/IP, è necessario specificare l'indirizzo IP o netblock per un utente root.

Qualcosa come questo:

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

o se la password di root è la stessa per root @ localhost allora

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

CAVEAT: root @ '%' non è normalmente raccomandato. Forse prova [email protected]'10.% 'o qualsiasi altro netblock per root.

Provaci !!!

8
RolandoMySQLDBA

È possibile che tu stia utilizzando una versione precedente di MySQL Workbench e debba essere aggiornato. Questo è un bug nella versione 6.0.8, che è attualmente la versione nei repository Ubuntu. L'aggiornamento alla versione 6.3.6 ha risolto questo problema per me.

Scarica qui: http://dev.mysql.com/downloads/workbench/#downloads

3
Gleasonator

Una cosa che non è menzionata in nessun'altra risposta è l'importanza del formato OpenSSH per la chiave come indicato in SO ( https://stackoverflow.com/questions/34504232/mysql-workbench-non riuscendo-to-connect-via-ssh-due-a-chiave/38108623 # 3810862 ).

Nonostante la risposta lì, sono stato in grado di utilizzare una chiave protetta da password con MySQL Workbench 6.3.7 (64 bit, Windows 10).

2
Thomas

Il mio problema era dovuto al fatto che stavo cercando di utilizzare un ed25519 Chiave SSH. Ho notato questo errore sul server SSH in auth.log:

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

Una volta passato a utilizzare una chiave RSA, tutto ha funzionato come previsto.

2
jbiz

Stai provando a connetterti al server tramite ssh ma utilizzando la porta mysql. La porta che desideri è quella su cui il tuo server SSH è in ascolto, in genere 22, quindi localhost e 3306 per nome host e porta mysql.

1
Justin Buser

Ho trovato lo stesso errore. Il problema è "in qualche modo" il timeout. Ho alzato anche il valore fino a 120 secondi, il che non mi ha aiutato.

Nel mio caso ho potuto risolverlo facendo un myserver.com nslookup e usando l'indirizzo IP invece del nome host. La mia ipotesi è un problema nel tentativo di connettersi da IPv4 a IPv6.

1
Markus Zeller

A volte le chiavi create da PuTTY non funzionano. Usa ssh-keygen sulla scatola di Linux per creare una coppia di chiavi. Copia il contenuto del nuovo id_rsa in un file di testo su Windows. Assicurati di aggiungere il contenuto di id_rsa.pub a authorized_keys sulla scatola di Linux. Tutti gli altri valori predefiniti in Workbench vanno bene, incluso 127.0.0.1 per MySQL Hostname. Ovviamente deve essere TCP/IP standard su SSH.

1
mcmacerson

Ho affrontato lo stesso problema. Ho controllato e provato a impostare AllowTcpForwarding Sì ma mancava nel mio sshd_config, quindi nessun aiuto. assicurati che il nome host ssh sia [~ # ~] non [~ # ~] lo stesso con il nome host mysql (usa localhost).

In workbench, scegli + per aggiungere una nuova connessione e impostare quanto segue:

  • metodo di connessione: TCP/IP standard su SSH
  • Nome host SSH: 192.168.0.50:22 (inserisci IP e porta del server SSH remoto (opzionale))
  • Nome utente SSH: sshuser
  • È possibile impostare la password o aggiungere al prompt
  • Nome host MYSQL: localhost o 127.0.0.1
  • Porta del server MYSQL: 06
  • È possibile impostare la password o aggiungere al prompt

Test di connessione. Dovrebbe avere successo, quindi premi OK.Viola!

1
Reagan Ochora

Ho trovato lo stesso errore. Il mio caso:

  • Ubuntu 18.04
  • mysql workbench 8.0.18
  • accesso ssh senza password (solo tramite chiavi ssh pubbliche/private)

Ho risolto questo problema dopo:

  1. rimuovi mysql-workbench-community (precedentemente installato tramite il sito Web mysql):

    Sudo apt rimuovere mysql-workbench-community -y

  2. installa mysql-workbench

    Sudo apt installa mysql-workbench -y

  3. aggiungi una nuova connessione

  4. fai clic su "Store in Keychain" per mysql (non per utente ssh) e imposta la password
  5. fai clic su "Verifica connessione"
  6. dopo aver richiesto la password, lascia vuoto l'inserimento e seleziona "salva password"
  7. fai clic su "OK"
0
ktretyak

Correre

SELECT user,Host FROM mysql.user;

E assicurati che l'utente a cui stai tentando di accedere come tramite Workbench dica localhost nella colonna Host e non %.

Se dice %, risolvilo con:

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

(Supponendo che tu abbia creato questo utente per lavorare con Workbench su SSH, o ovviamente, poiché quanto sopra impedirà a quell'utente di accedere tramite TCP remoto)

0
Nick

OK, so che questa è una vecchia domanda, ma mi sono strappato i capelli per ore. Ho controllato tutto quanto menzionato da Bruno e Eye e sembrava tutto a posto. Poi ho capito che era davvero una cosa chiave pubblica/privata. Così ho acceso Pageant e ho aggiunto la mia chiave privata, in modo che creasse una chiave pubblica che MySQL Workbench poteva leggere e voilà, connessa! (In realtà è stato un po 'anticlimatico quando MySQL Workbench ha effettivamente iniziato a funzionare, ma in modo felice.)

TLDR: utilizzare Pageant per generare una chiave pubblica dalla chiave privata.

0
Bonnie

Ho appena avuto lo stesso problema sulla macchina Ubuntu che si collega a un server che esegue MySQL versione 5.5.29 e MySQL Workbench 5.2.40. Il server SSH richiede l'uso di un tasto ssh.

Non sono stato in grado di connettermi al server MySQL utilizzando l'utente root, invece ho dovuto creare un utente non root separato da utilizzare per l'accesso. Dopo ciò sono stato in grado di connettermi bene.

Spero che sia di aiuto.

0
Kyle Coots