私はリモートMySQLデータベースへのSSH接続を作成するためにすべてを試しました。ホストがSSHアクセスを許可していないかどうかを確認するには
String user = "user";
String password = "pass";
String remoteHost = "host";
int localPort = 2022;
int remotePort = 3306;
Session session = null;
//Try to forward ports
try
{
//Create the JSCH object
JSch jsch = new JSch();
//Get the session
session = jsch.getSession(user, remoteHost);
//Set the password
session.setPassword(password);
//To be able to connect to any host (this is just for testing!)
session.setConfig("StrictHostKeyChecking", "no");
//Connect the session
session.connect();
//Set port forward
session.setPortForwardingL(localPort, "127.0.0.1", remotePort);
//Show message
System.out.println("Waiting for connections…");
//Exit on return
InputStreamReader converter = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(converter);
in.readLine();
}
//Failed
catch(Exception ex)
{
//Message
System.out.println("Failed to setup tunnel");
//Stack trace
ex.printStackTrace();
}
//Clean up
finally
{
try{session.disconnect();} catch(Throwable t) {t.printStackTrace();}
}
しかし、私はこのエラーを取得しておいてください。com.jcraft.jsch.JSchException:java.net.ConnectException:私は信じているため、操作は、それは私にそのエラーを与えている理由を私は理解していない
をタイムアウトしました私は正しい情報を使用しています。だから私の質問は、どのように私はホストのリモートIPをチェックするだろうと私は彼らがSSHアクセスを許可することを確認するだろうか?
UPDATE:
私はsshの-vユーザー@ホストを介してリモートのMySQLデータベースに接続することができています。しかし、私のコードでは、このエラーが発生しています。
com.jcraft.jsch.JSchException:PortForwardingL:ローカルポート127.0.0.1:2022はバインドできません。
Macを使用していますが、Macではローカルポートが異なりますか?
あなたはおそらく、sshのポートを指定する必要があります( 'int型次に、remoteport = 22;');それでも問題が解決しない場合は、プロバイダに相談する必要があります。 –
mysqlにはポート「3306」が使用されます。あなたはsshで何をしたいですか? ssh経由のリモートsshまたはmysql接続のみ? –
例外のstatcktraceを投稿できますか?あなたの手動接続が動作している場合は、MySQLポートの前方を含めます。その後、あなたのコードもうまくいくはずです。これまでに何も間違っていないので。 – SubOptimal