Conexao SSH

Prezados estou tentado efetuar uma conexao SSH pelo postgresql, porem não estou conseguindo, segue código e erro:

[code]import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties;

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;

public class CTestDriver {

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…

Pessoal, por favor alguem pode me dar uma luz?

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.

DriverManager.getConnection("jdbc:postgresql://localhost:5432/nome_banco", strDbUser, strDbPassword);

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?

amigo, o nome da database é “exemplo_tabela”

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();
        }
        
    }
}

Um link que fala disso no postgre
http://tas.eti.br/blog/2011/10/habilitando-o-acesso-remoto-no-postgresql/

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…

eu fiz a classe assim:

[code]
public class PostCon {

public static void main(String[] args) {

    String endereco, user, passwd;
    endereco = "jdbc:postgresql://xxx.xxx.xxx.xxx:5432/exemplo_tabela";
    user = "postgres";
    passwd = "xxx";
    Connection con;
    try {
        con = DriverManager.getConnection(endereco, user, passwd);
        PreparedStatement pst = con.prepareStatement("select * from tabela");

        ResultSet rs = pst.executeQuery();
        while (rs.next()) {
            System.out.println(rs.getString("coluna1"));
        }
    } catch (SQLException ex) {
        ex.printStackTrace();
    }

}

}[/code]

está dando a seguinte mensagem:

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);

Bom, se você ta com o drive e o ip certo e o usuário tem permissão para acesso remoto então não tenho mais ideias =/

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?