Não consigo conectar usando a conexão TCP / IP sobre SSH no MySQL Workbench a partir de um PC. O que está acontecendo?
Eu criei um banco de dados MySQL 5.1 em um servidor Ubuntu mysql.myhost.com . Eu posso acessá-lo localmente. O MySQL Workbench (PC) oferece uma conexão via TCP sobre ssh. Ele roda na porta 3306 no servidor remoto, onde o mysql da linha de comando funciona bem.
Usei os seguintes detalhes da sessão:
- Método de conexão: TCP / IP sobre SSH.
- Nome do host SSH: mysql.myhost.com : 3306
- Nome de usuário SSH: meu login no linux
- Arquivo de chave pública SSH: meu arquivo de chave pública local
- Nome do host do MySQL: 127.0.0.1 MySQL
- Porta do servidor: 3306
- Nome de usuário: root
Recebo uma mensagem de erro ao tentar conectar: "Falha ao conectar ao MySQL em 127.0.0.1:3306 através do túnel SSH em mysql.myhost.com com raiz do usuário"
"Não foi possível conectar ao servidor MySQL em '127.0.0.1' (10061)"
Como outro teste - eu configurei um túnel SSH com a porta 3306 usando Putty e posso conectar OK usando o MySQL Workbench através desse túnel que encaminha as conexões ao meu 3306 local para o servidor remoto, conforme descrito acima. Mas não consigo "TCP / IP sobre SSH" trabalhando no Workbench.
Pergunta secundária: quando o Workbench pede "Caminho para o arquivo de chave pública SSH", ele realmente não precisa do meu arquivo de chave privada?
fonte
Respostas:
Eu me deparei com essa pergunta quando eu mesmo havia encontrado esse erro. Finalmente pude descobrir a configuração.
Finalmente, eu tenho o seguinte inserido no MySQL WorkBench.
A única coisa que resta para você é configurar corretamente o servidor SSH para funcionar com chaves em vez de senhas. Espero que isso ajude alguém.
fonte
AuthorizedKeysFile /home/root/.ssh/authorized_keys
e que as chaves_autorizadas tivessem minha chave PUBLIC como entrada.AllowTcpForwarding yes
é aplicada ao servidor remoto, ou seja, o host que possui a instância do MySQL que estamos tentando conectar; ou a máquina local com MySQL Workbench instaladoAllowTcpForwarding
entradaEu acho que a abordagem TCP / IP sobre SSH funciona estabelecendo uma conexão SSH "normal" subjacente à conexão MySQL (da mesma maneira que você usaria o túnel usando
-L
o cliente de linha de comando OpenSSH).Portanto, você precisará especificar uma conexão com um servidor SSH no servidor através do qual você está estabelecendo o túnel. Aqui, você parece estar usando
mysql.myhost.com:3306
, o que implica que você está executando este servidor SSH (não o MySQL) na porta 3306.É possível ligar um servidor MySQL em 127.0.0.1:3306 e um servidor SSH no seu endereço IP externo
mysql.myhost.com
na porta 3306, mas isso é muito improvável. Eu acho que seu servidor SSH está escutando na porta 22 (o padrão).Você provavelmente deveria usar
mysql.myhost.com:22
. (Verifique se você pode se conectar a ele por meio de um cliente SSH normal, como o Putty.)fonte
Você pode precisar verificar os usuários na tabela mysql.user.
Execute esta consulta:
Você deve ver algo assim:
Por favor note que
Se você deseja que o root se conecte via TCP / IP, especifique o endereço IP ou o netblock para um usuário root.
Algo assim:
ou se a senha root for a mesma para root @ localhost,
CAVEAT: root @ '%' normalmente não é recomendado. Talvez tente root@'10.% 'ou qualquer outro netblock para root.
De uma chance !!!
fonte
...@localhost
funcionar através do túnel SSH, já que, no que diz respeito ao servidor MySQL, a conexão vem do fim do túnel?Você pode estar usando uma versão mais antiga do MySQL Workbench e precisa atualizar. Este é um erro na versão 6.0.8, que atualmente é a versão nos repositórios do Ubuntu. A atualização para a versão 6.3.6 corrigiu isso para mim.
Downloads aqui: http://dev.mysql.com/downloads/workbench/#downloads
fonte
Uma coisa que não é mencionada em nenhuma outra resposta é a importância do formato OpenSSH para a chave, conforme declarado no SO ( https://stackoverflow.com/questions/34504232/mysql-workbench-failing-to-connect-via- ssh-devido-à-chave / 38108623 # 38108623 ).
Apesar da resposta, pude usar uma chave protegida por senha com o MySQL Workbench 6.3.7 (64 bits, Windows 10).
fonte
Meu problema foi devido ao fato de eu estar tentando usar uma
ed25519
chave SSH. Percebi esse erro no servidor SSH emauth.log
:Depois que passei a usar uma chave RSA, tudo funcionou como esperado.
fonte
Você está tentando se conectar ao servidor via ssh, mas usando a porta mysql. A porta que você deseja é o que o servidor ssh estiver ouvindo, normalmente 22, localhost e 3306 para mysql hostname e port.
fonte
Eu enfrentei o mesmo problema. Eu verifiquei e tentei definir AllowTcpForwarding Sim, mas estava faltando no meu sshd_config, portanto não ajuda. verifique se o nome do host ssh NÃO é o mesmo que o nome do host mysql (use localhost).
No ambiente de trabalho, escolha + para adicionar nova conexão e defina o seguinte:
Teste a conexão. Deverá ser bem sucedido e clique em OK.Viola!
fonte
Às vezes, as chaves criadas por PuTTY não funcionam. Use ssh-keygen na caixa Linux para criar um par de chaves. Copie o conteúdo do novo id_rsa para um arquivo de texto no Windows. Certifique-se de adicionar o conteúdo de id_rsa.pub a allowed_keys na caixa Linux. Todos os outros padrões no Workbench são bons, incluindo 127.0.0.1 para MySQL Hostname. Obviamente, ele deve ser TCP / IP padrão sobre SSH.
fonte
Eu vim com o mesmo erro. O problema é "um pouco" o tempo limite. Aumentei o valor até 120 segundos, o que não ajudou.
No meu caso, eu poderia resolver isso usando um nslookup myserver.com e usando o endereço IP em vez do nome do host. Minha suposição é um problema ao tentar conectar-se do IPv4 ao IPv6.
fonte
Acabei de ter esse mesmo problema na máquina Ubuntu conectando-se a um servidor executando o MySQL versão 5.5.29 e o MySQL Workbench 5.2.40. O servidor SSH requer o uso de uma chave ssh.
Não consegui me conectar ao servidor MySQL usando o usuário root, ao invés disso, tive que criar um usuário não root separado para usar no login. Depois disso, consegui me conectar muito bem.
Espero que isto ajude.
fonte
OK, eu sei que essa é uma pergunta antiga, mas eu puxei meu cabelo por várias horas. Eu verifiquei tudo mencionado por Bruno e Eye e tudo parecia bom. Então eu percebi que era realmente uma coisa de chave pública / privada. Então eu iniciei o Pageant e adicionei minha chave privada, para que ela criasse uma chave pública que o MySQL Workbench pudesse ler e pronto, conectada! (Na verdade, foi meio anticlimático quando o MySQL Workbench começou a funcionar, mas de uma maneira feliz.)
TLDR: use o Pageant para gerar uma chave pública a partir da sua chave privada.
fonte
Somente o que encontrei ... frequentemente estou criando usuários no servidor SSH sem shell (como / sbin / nologin) para impedir que eles possam acessar um servidor e criar arquivos e etc lá ... (para sistemas de produção que está fazendo isso em firewalls).
Em um ambiente Linux comum depois disso, você ainda pode encaminhar portas depois, como:
e depois disso, conecte-o a partir da estação de trabalho local como:
Mas o ambiente de trabalho está dando um erro que não pode se conectar ao MySQL ... Se você alterar o shell para esse usuário, digamos, / bin / bash - tudo funcionará bem depois disso.
Não faço ideia por que o Workbench está exigindo shell local no servidor SSH remoto.
fonte
Basta criar uma nova chave RSA com o formato correto para o mysql workbench.
Por exemplo:
fonte