Pergunta sobre java, postgresql, ssh – Java + SSH + Postgres

2

Estamos implementando um projeto universitário: um serviço de pooling de carros em Java.

Precisamos resolver um problema ligado "como gerenciar um servidor postgres": o banco de dados PostgreSQL é configurado em um servidor de laboratório chamado "golem" (130.136.4.sth) acessível somente através de terminais na mesma sub-rede (130.136.4.0). Nós temos quatro contas (as nossas) através das quais podemos estabelecer uma conexão ssh com um host.

É possível fazer consultas SQL através do SSH em direção ao Postgres DB em JAVA?

Obrigado :) Davide

Dê uma olhada neste. Não é a resposta completa, mas acho que é parte dela, pelo menos a conexão SSH:example-code.com/java/ssh_exec.asp Valentin Vrinceanu
@Brendan: Desculpe, mas ainda não tentamos nada, porque não somos especialistas em Java. Então, nós estávamos procurando por dicas de vocês especialistas :) Talvez um padrão de design verificado em vez de más soluções encontradas outras foram. Davide
O que você tentou? ... a sério ... Estou empatado de ler perguntas abertas ... Brendan

Sua resposta

3   a resposta
4

você pode usar o encaminhamento de porta ssh para acessar o banco de dados como se ele estivesse instalado localmente. Como o encaminhamento de porta está ativado depende do software cliente que você usa, o openssh, por exemplo, possui uma opção de linha de comando para ele (-L):

ssh [email protected] -L localport:remotehost:remoteport

Este comando faria oremoteport emremotehost, embora acessível apenas através dehost, disponível emlocalport no seu computador.

Você também pode dizer ao ssh para escutar 0.0.0.0:localport ao invés do padrão 127.0.0.1:localport passando o-g opção (veja página man). Você NÃO deve fazer isso a menos que você realmente precise, mas se precisar, estará lá. Isso expõe "remotehost: remoteport" via "<yourhost>: localport" paraTODOS quem pode contatar "<yourhost>: yourport" então certifique-se de que "remotehost: remoteport" tenha segurança forte configurada e / ou use iptables no host de encaminhamento para limitar o acesso à porta. Craig Ringer
Também não há razão real para usar essa abordagem apenas para desenvolvimento. É fácil adicionar uma opção para seu aplicativo Java gerar uma sessão SSH para o tráfego de encapsulamento. ssh port forwards são muito sólidos, embora o desempenho sob congestionamento possa ser duvidosoporque o TCP no TCP confunde o controle de congestionamento do TCP e os algoritmos de taxa (http://sites.inka.de/bigred/devel/tcp-tcp.html). Se você não quiser gerar um processo, [JSch suporta encaminhamento de porta e tunelamento IP via Java nativo ssh. Craig Ringer
2

pois elas parecem mais fáceis de realizar o que você precisa.

No entanto, se você realmente precisar implementar o envio de comando com Java para sua atribuição de laboratório, você pode dar uma olhada na biblioteca JSch (Java Secure Channel) encontrada aqui:http://www.jcraft.com/jsch/ Exemplos estão aquihttp://www.jcraft.com/jsch/examples/

Com ele você pode enviar comandos ssh e realizar qualquer tipo de operação através de uma API Java

Com certeza, parece que o JSch também pode encapsular o IP, para que eles possam até mesmo acessar o Pg através da sessão SSH, se o acesso direto estiver protegido por firewall ou filtrado. Craig Ringer
... @ DavideAguiari Eu não iria expor publicamente o seu nome de usuário, host e endereço IP. kmarks2
Não se preocupe. Os usuários são falsos e o IP é altamente protegido pela Universidade. Davide
Estamos tentando essa solução. Dica: Manualmente a solução funciona: ssh [email protected] //> digite a senha user_lab // psql -h golem -U ingsw12_03 ingsw12_03 // ingsw12_03 => (Acesso postresql server ok) // Esta é a java "solution ":pastebin.com/QrM2UkHD  org.postgresql.util.PSQLException: O servidor solicitou autenticação baseada em senha, mas nenhuma senha foi fornecida. Alterando String rhost = "golem" e urlAlfresco = "jdbc: postgresql: // golem:" + rport + "/ ingsw12_03"; org.postgresql.util.PSQLException: Connection failed Causado por: java.net.UnknownHostException: golem Como resolver? :( Davide
1

ssh" seguido por qualquer comando que o comando seja executado no host remoto. Então você deve ser capaz de executar consultas pré-cozidas no modo batch via ssh.

Considere fazer trocas de chave e de chave para habilitar a execução de ssh sem senha.

Exemplo (isso apenas mostra uma lista de diretórios para o seu terminal):

ssh [email protected] ls

Perguntas relacionadas