Conexão SSH permanente via script Bash?

3

Eu tenho dois servidores OpenSolaris. O servidor remoto tem um banco de dados MySQL. O MySQL é configurado com skip-networking; Portanto, não posso acessar esse banco de dados a partir do primeiro servidor simplesmente usando o nome do host e a porta.

Eu devo ter uma configuração de túnel ssh para conectar ao MySQL a partir do servidor local. Eu posso fazer isso com um simples: ssh -L 3350: localhost: 3306 user @ server e chaves SSH. Isso funciona muito bem.

No entanto, eu preciso que a conexão seja permanente e, de preferência, seja executada na inicialização também.

Eu criei um pequeno script bash para criar a conexão. No entanto, ele simplesmente conecta, finaliza o script e perde a conexão ssh. Se eu modificar o script para executar um comando no servidor remoto e um comando sleep, ele permanecerá conectado por X segundos. Eu posso então conectar com o MySQL. No entanto, certamente irei perder a conexão após X segundos.

Alguém tem sugestões para uma maneira mais elegante de fazer isso? Existe alguma maneira de usar o svcadm do Solaris para criar a conexão e mantê-la sempre?

UPDATE: Eu descobri que se eu adicionar sleep X e depois criar a conexão MySQL antes de X expirar, a conexão ssh permanecerá indefinidamente. No entanto, isso não é uma solução muito estável. Se eu perder a conexão com o banco de dados, a conexão ssh morrer e então ficarei preso sem poder me conectar novamente.

    
por Justin Noel 12.06.2009 / 05:45

5 respostas

6

Você quer a opção -N no OpenSSH. Por exemplo:

ssh -N -L 3350:localhost:3306 user@server &
    
por 12.06.2009 / 05:56
1

Você quer olhar para uma ferramenta como o autossh, que mantém um túnel ssh funcionando. Se ele morrer, ele recria automaticamente.

    
por 12.06.2009 / 09:38
1

Eu acho que você pode tentar ssh-copy-id - permite a fácil propagação do SSH pub / priv keypair

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
    
por 12.06.2009 / 10:05
0

Ou talvez rstunnel, que faz quase o mesmo que autossh - > link

    
por 12.06.2009 / 09:50
0

Se você quiser evitar a sobrecarga de ssh, criptografia, autenticação e outros, você pode fazer algo muito semelhante com o netcat (ou nc). Existem muitos tutoriais na web. Se você começar com eles e precisar de ajuda mais específica, me avise.

    
por 13.06.2009 / 06:02