private static void doSshTunnel(String strSshUser, String strSshPassword, String strSshHost, int nSshPort, String strRemoteHost, int nLocalPort, int nRemotePort) throws JSchException {
final JSch jsch = new JSch();
Session session = jsch.getSession(strSshUser, strSshHost, 22);
session.setPassword(strSshPassword);
final Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
session.setPortForwardingL(nLocalPort, strRemoteHost, nRemotePort);
System.out.println("sessão:");
System.out.println(session.isConnected());
}
public static void main(String[] args) {
try {
String strSshUser = "xxxx"; // SSH loging username
String strSshPassword = "xxxxx"; // SSH login password
String strSshHost = "xxxxx"; // hostname or ip or SSH server
int nSshPort = 22; // remote SSH host port number
String strRemoteHost = "xxxxxx"; // hostname or ip of your database server
int nLocalPort = 5432; // local port number use to bind SSH tunnel
int nRemotePort = 5432; // remote port number of your database
String strDbUser = "xxxx"; // database loging username
String strDbPassword = "xxxxxx"; // database login password
CTestDriver.doSshTunnel(strSshUser, strSshPassword, strSshHost, nSshPort, strRemoteHost, nLocalPort, nRemotePort);
Class.forName("org.postgresql.Driver");
Connection con = DriverManager.getConnection("jdbc:postgresql://xxxxxx:5432/exemplo_tabela", strDbUser, strDbPassword);
con.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
System.exit(0);
}
}
}[/code]
erro:
org.postgresql.util.PSQLException: Conexão negada. Verifique se o nome da máquina e a porta estão corretos e se o postmaster está aceitando conexões TCP/IP.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:215)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:64)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:144)
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:29)
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:21)
at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:31)
at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
at org.postgresql.Driver.makeConnection(Driver.java:410)
at org.postgresql.Driver.connect(Driver.java:280)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at CTestDriver.main(CTestDriver.java:51)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at org.postgresql.core.PGStream.<init>(PGStream.java:61)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:109)
... 11 more
EDIT: eu estou conseguindo utilizar o PGADMIN logo, acredito que seja algum erro de configuração
estou usando o LINUX onde está instalado o BD, já fiz todas as alterações nos arquivos CONF.
Eu sei que ninguém ai vive de responder perguntas em fórum, mas, isso o que eu to querendo é possível? procurei varias cosias no google e não encontrei…
Cara sou novo em java também mas vamos lá.
Por que você precisa de uma conexão ssh? A questão é só abrir uma conexão com um banco remoto?
E no caminho do driver se põem o nome do banco e não da tabela.
entao… o banco está nas nuvens, eu tenho o IP do servidor, o usuário para conectar e a senha, tenho também o banco de dados instalado dentro dele que é o PostgreSQL com o usuário de conexão e a senha, pelo PGADMIN eu preencho o IP, o usuário , a senha do servidor nas nuvens e o usuário e senha do banco de dados, até ai tudo blz! o problema… via código java eu não consigo fazer isso, pois está dando o erro acima mencionado… fiz milhares de consulta no google e não consegui achar como fazer isso. então preciso confirmar, isso é possível via código java? sim? como eu faço? utilizo alguma classe em especial? esse é meu problema…
Cara nunca conectei remoto mas vou fazer aqui. Você criou o database no postgre não foi? Qual o nome dele?
O postgre ta configurando para aceitar conexão remota?
Cara consegui aqui conectar remoto no MySQL. Tenho um servidor na nuvem também e era o seguinte. eu tive que configurar o mysql para aceitar conexão de qualquer ip. Estava dando o mesmo erro que o seu de acess denied antes. O código que eu usei.
public class conectaMySql {
public static void main(String args[]){
String endereco, user, passwd;
endereco = "jdbc:mysql://xxxxxxx:3306/exemplo_db";
user = "root";
passwd = "toor";
Connection con;
try{
con = DriverManager.getConnection(endereco, user, passwd);
PreparedStatement pst = con.prepareStatement("select * from tabela_teste");
ResultSet rs = pst.executeQuery();
while(rs.next()){
System.out.println(rs.getString("nome"));
}
}catch(SQLException ex){
ex.printStackTrace();
}
}
}
então… eu consigo acessar via PGADMIN se não estivesse configurado não estaria funcionando… por desencargo eu entrei para confirmar e está com todas as configurações conforme o link que voce me mandou…
org.postgresql.util.PSQLException: Conexão negada. Verifique se o nome da máquina e a porta estão corretos e se o postmaster está aceitando conexões TCP/IP.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:215)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:64)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:144)
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:29)
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:21)
at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:31)
at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
at org.postgresql.Driver.makeConnection(Driver.java:410)
at org.postgresql.Driver.connect(Driver.java:280)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at PostCon.main(PostCon.java:28)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at org.postgresql.core.PGStream.<init>(PGStream.java:61)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:109)
... 11 more
mais alguma ideia do que pode ser?
lugar do erro:
con = DriverManager.getConnection(endereco, user, passwd);
obrigado mesmo assim, é f*da, consigo fazer a conexao via programa que administra banco de dados, só que não consigo fazer via classe java, alguem mais tem alguma ideia?