web-dev-qa-db-fra.com

Essayer d'utiliser MySQL Workbench avec TCP / IP sur SSH - échec de connexion

Je ne peux pas me connecter à l'aide d'une connexion TCP/IP sur SSH dans MySQL Workbench à partir d'un PC. Que se passe-t-il?

J'ai créé une base de données MySQL 5.1 sur un serveur Ubuntu mysql.myhost.com. Je peux y accéder localement. MySQL Workbench (PC) propose d'établir une connexion via TCP via ssh. Il fonctionne sur le port 3306 sur le serveur distant où la ligne de commande mysql fonctionne correctement.

J'ai utilisé les détails de session suivants:

  • Méthode de connexion: TCP/IP sur SSH.
  • Nom d'hôte SSH: mysql.myhost.com: 3306
  • Nom d'utilisateur SSH: ma connexion Linux
  • Fichier de clé publique SSH: mon fichier de clé publique locale
  • Nom d'hôte MySQL: 127.0.0.1 MySQL
  • Port du serveur: 3306
  • Nom d'utilisateur: root

Je reçois un message d'erreur lorsque j'essaie de me connecter: "Impossible de se connecter à MySQL à 127.0.0.1:3306 via le tunnel SSH sur mysql.myhost.com avec la racine utilisateur"

"Impossible de se connecter au serveur MySQL sur '127.0.0.1' (10061)"

Comme autre test - j'ai mis en place un tunnel SSH avec le port 3306 en utilisant PuTTY et je peux me connecter OK en utilisant MySQL Workbench via ce tunnel qui transmet les connexions à mon 3306 local au serveur distant comme décrit ci-dessus. Mais je ne peux pas faire fonctionner "TCP/IP sur SSH" dans Workbench.

Question secondaire: lorsque Workbench demande "Chemin d'accès au fichier de clé publique SSH", n'a-t-il pas vraiment besoin de mon fichier de clé privée?

43
Dizzley

Je suis tombé sur cette question lorsque j'avais moi-même rencontré cette erreur. J'ai pu enfin comprendre la configuration.

  1. Je n'ai rien touché dans /etc/mysql/my.cnf qui a déjà bind_address = 127.0.0.1. Seul l'hôte local peut se connecter.
  2. J'utilise le serveur OpenSSH. Donc, dans son fichier de configuration/etc/ssh/sshd_config, je suis passé de no à yes le paramètre responsable de TCP transmission, donc - AllowTcpForwarding yes.
  3. Enfin, j'ai les informations suivantes entrées dans MySQL WorkBench.

    • Nom d'hôte SSH: 192.168.0.8:22 (mon serveur SSH écoute le port 22)
    • Nom d'utilisateur SSH: sshuser
    • Fichier de clé SSH: * C:\Users\windowsuser\.ssh\id_rsa * (devrait être une clé privée, même si elle est publique)
    • Nom d'hôte MySQL: 127.0.0.1 (cela ne doit pas être modifié, car le serveur MySQL par défaut est lié à localhost uniquement que je n'ai pas modifié)
    • Port du serveur MySQL: 3306 (également par défaut)
    • Nom d'utilisateur: racine

La seule chose qui vous reste à faire est de configurer correctement votre serveur SSH pour qu'il fonctionne avec des clés plutôt qu'avec des mots de passe. J'espère que cela aidera quelqu'un.

31
Eye

Je pense que l'approche TCP/IP sur SSH fonctionne en établissant une connexion SSH "normale" sous-jacente à la connexion MySQL (de la même manière que pour un tunnel utilisant -L avec le client de ligne de commande OpenSSH).

Par conséquent, vous devez spécifier une connexion à un serveur SSH sur le serveur via lequel vous établissez le tunnel. Ici, vous semblez utiliser mysql.myhost.com:3306, ce qui impliquerait que vous exécutez ce serveur SSH (pas MySQL) sur le port 3306.

Il est possible de lier un serveur MySQL sur 127.0.0.1:3306 et un serveur SSH sur votre adresse IP externe pour mysql.myhost.com sur le port 3306, mais c'est très peu probable. Je suppose que votre serveur SSH écoute sur le port 22 (par défaut).

Vous devriez probablement utiliser mysql.myhost.com:22. (Vérifiez que vous pouvez également vous y connecter via un client SSH normal tel que PuTTY.)

8
Bruno

Vous devrez peut-être vérifier les utilisateurs dans la table mysql.user.

Exécutez cette requête:

SELECT user,Host FROM mysql.user;

Vous devriez voir quelque chose comme ceci:

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)

Veuillez noter que

  • root @ localhost ne peut se connecter qu'à partir de localhost.
  • ping @ '%' peut se connecter via TCP/IP
  • [email protected].% peut se connecter via TCP/IP à partir de ce netblock uniquement
  • [email protected].% peut se connecter via TCP/IP à partir de ce netblock uniquement

Si vous souhaitez que root se connecte via TCP/IP, vous devez spécifier l'adresse IP ou le netblock pour un utilisateur root.

Quelque chose comme ça:

GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'whateverpassword';

ou si le mot de passe root est le même pour root @ localhost,

GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY PASSWORD '*7A670E02260CDEEFF062DD08F3A6F6DA079998CB ';

CAVEAT: root @ '%' n'est normalement pas recommandé. Essayez peut-être root@'10.% 'ou tout autre netblock pour root.

Essaie !!!

8
RolandoMySQLDBA

Vous utilisez peut-être une ancienne version de MySQL Workbench et devez mettre à jour. Il s'agit d'un bogue de la version 6.0.8, qui est actuellement la version des référentiels Ubuntu. La mise à jour vers la version 6.3.6 a corrigé cela pour moi.

Téléchargements ici: http://dev.mysql.com/downloads/workbench/#downloads

3
Gleasonator

Une chose qui n'est mentionnée dans aucune autre réponse est l'importance du format OpenSSH pour la clé comme indiqué sur SO ( https://stackoverflow.com/questions/34504232/mysql-workbench-failing-to-connect-via-ssh-due-to-key/38108623 # 3810862 ).

Malgré la réponse, j'ai pu utiliser une clé protégée par mot de passe avec MySQL Workbench 6.3.7 (64 bits, Windows 10).

2
Thomas

Mon problème était dû au fait que j'essayais d'utiliser un ed25519 Clé SSH. J'ai remarqué cette erreur sur le serveur SSH dans auth.log:

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

Une fois que je suis passé à l'utilisation d'une clé RSA, tout a fonctionné comme prévu.

2
jbiz

Vous essayez de vous connecter au serveur via ssh mais en utilisant le port mysql. Le port que vous voulez est celui que votre serveur ssh écoute, généralement 22, puis localhost et 3306 pour le nom d'hôte et le port mysql.

1
Justin Buser

J'ai trouvé la même erreur. Le problème est "quelque peu" le délai d'attente. J'ai même augmenté la valeur jusqu'à 120 secondes, ce qui n'a pas aidé.

Dans mon cas, j'ai pu le résoudre en faisant un nslookup myserver.com et en utilisant l'adresse IP au lieu du nom d'hôte. Mon hypothèse est un problème en essayant de se connecter d'IPv4 à IPv6.

1
Markus Zeller

Parfois, les clés créées par PuTTY ne fonctionnent pas. Utilisez ssh-keygen sur la boîte Linux pour créer une paire de clés. Copiez le contenu du nouveau id_rsa dans un fichier texte sous Windows. Assurez-vous d'ajouter le contenu de id_rsa.pub à authorized_keys sur la boîte Linux. Toutes les autres valeurs par défaut de Workbench sont correctes, y compris 127.0.0.1 pour MySQL Hostname. Bien sûr, il doit s'agir de TCP/IP standard sur SSH.

1
mcmacerson

J'ai fait face au même problème. J'ai vérifié et essayé de définir AllowTcpForwarding Yes mais il manquait dans mon sshd_config donc aucune aide. assurez-vous que le nom d'hôte ssh est [~ # ~] pas [~ # ~] identique avec le nom d'hôte mysql (utilisez localhost).

Dans le plan de travail, choisissez + pour ajouter une nouvelle connexion et définissez les paramètres suivants:

  • méthode de connexion: TCP/IP standard sur SSH
  • Nom d'hôte SSH: 192.168.0.50:22 (placez l'IP et le port du serveur SSH distant (facultatif))
  • Nom d'utilisateur SSH: sshuser
  • Vous pouvez définir un mot de passe ou ajouter à l'invite
  • Nom d'hôte MYSQL: localhost ou 127.0.0.1
  • Port du serveur MYSQL: 06
  • Vous pouvez définir un mot de passe ou ajouter à l'invite

Tester la connexion. Il devrait réussir, puis cliquez sur OK. Viola!

1
Reagan Ochora

J'ai trouvé la même erreur. Mon cas:

  • Ubuntu 18.04
  • mysql workbench 8.0.18
  • accès ssh sans mot de passe (uniquement via les clés ssh publiques/privées)

J'ai résolu ce problème après:

  1. retirer mysql-workbench-community (précédemment installé via le site mysql):

    Sudo apt supprimer mysql-workbench-community -y

  2. installer mysql-workbench

    Sudo apt install mysql-workbench -y

  3. ajouter une nouvelle connexion

  4. cliquez sur "Store in Keychain" pour mysql (pas pour l'utilisateur ssh) et définissez le mot de passe
  5. cliquez sur "Tester la connexion"
  6. après le mot de passe d'invite, laissez l'entrée vide et cochez "enregistrer le mot de passe"
  7. cliquez sur OK"
0
ktretyak

Courir

SELECT user,Host FROM mysql.user;

Et assurez-vous que l'utilisateur auquel vous essayez de vous connecter via Workbench indique localhost dans la colonne Hôte et non %.

S'il dit %, corrigez-le avec:

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

(En supposant que vous avez créé cet utilisateur pour travailler avec Workbench via SSH, ou bien sûr, car ce qui précède empêchera cet utilisateur de se connecter via TCP distant)

0
Nick

OK, je sais que c'est une vieille question, mais j'ai arraché mes cheveux pendant des heures. J'ai vérifié tout ce que Bruno et Eye ont mentionné et tout semblait bien. Ensuite, j'ai réalisé que c'était vraiment un élément clé privé/public. J'ai donc lancé Pageant et ajouté ma clé privée, afin qu'elle crée une clé publique que MySQL Workbench pourrait lire et le tour est joué, connecté! (C'était en fait un peu anticlimatique lorsque MySQL Workbench a commencé à fonctionner, mais d'une manière heureuse.)

TLDR: utilisez Pageant pour générer une clé publique à partir de votre clé privée.

0
Bonnie

Je viens d'avoir ce même problème sur une machine Ubuntu se connectant à un serveur exécutant MySQL version 5.5.29 et MySQL Workbench 5.2.40. Le serveur SSH nécessite l'utilisation d'une clé ssh.

Je n'ai pas pu me connecter au serveur MySQL à l'aide de l'utilisateur root, mais j'ai dû créer un utilisateur non root distinct à utiliser pour la connexion. Après cela, j'ai pu me connecter très bien.

J'espère que cela t'aides.

0
Kyle Coots