Conecte o Servidor de Bases SSH ao Servidor DB

3

Eu quero me conectar a um servidor de banco de dados Linux em uma sub-rede privada por meio de um servidor Bastion SSH do Linux localizado em uma sub-rede pública. Eu também quero criar um túnel para a porta 3306.

Quando tento criar a conexão SSH do servidor Bastion, recebo "Permission Denied (publickey)". mensagem.

ssh -L 10.0.0.10:22:10.0.1.10:22 [email protected]

Aqui está a saída de depuração em que ela falha:

> debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug1: Trying private key: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

A chave pública correta já está no servidor do banco de dados, por isso acho que preciso inserir a chave privada do RSA em algum lugar. Onde eu insiro a chave privada? Também há alguma alteração de configuração do sshd necessária para criar o túnel no 3306?

    
por JMC 06.10.2011 / 17:44

2 respostas

5
client <-----> Bastion Server <-----> Database Server
                (10.0.1.10)             (10.0.0.10)

Então, tente isto:

$ ssh -C -N -L 3306:10.0.0.10:3306 [email protected]

e, em seguida, você pode se conectar ao servidor de banco de dados executando:

$ mysql -u <user> -p -h localhost

Where do I enter the private key?

O padrão é ~/.ssh/ , mas você pode colocar em qualquer lugar e especificar com a opção -i .

Also are there any sshd config changes required to create the tunnel on 3306?

Verifique se a linha AllowTcpForwarding está comentada ou definida como yes .

    
por 06.10.2011 / 21:01
1

A causa principal parece estar relacionada às chaves ssh no host bastion. Se você não está logando no host bastion como root (e você não deveria estar), então talvez o usuário que você está logando lá não tenha um diretório home e esteja tentando usar o diretório home do root? Se você está fazendo login no host de bastiões como root, provavelmente não deveria estar fazendo isso.

Você está usando um agente ssh em seu host de origem? Dê uma olhada no / etc / ssh / sshd_config no host bastion. Se AllowAgentForwarding for "no", tente alterá-lo para "yes" e reiniciar o sshd. Se você não estiver usando um ssh-agent em seu host de origem, você pode querer considerar fazê-lo, pois isso manterá sua chave e permitirá o encaminhamento para conexões ssh remotas (como no host bastion).

Outra opção seria ativar a autenticação de senha na máquina do banco de dados para que não falhe quando não puder fazer a autenticação da chave pública. Verifique o / etc / ssh / sshd_config na máquina do banco de dados para PasswordAuthentication e certifique-se de que ele não esteja configurado (o padrão é "yes") ou está definido como "yes".

Quando você executa o ssh, pode passar vários argumentos -v para aumentar o nível de depuração. Às vezes isso ajuda a mostrar exatamente onde está o problema.

    
por 06.10.2011 / 21:01