2016-05-02 11 views
0

私はリモート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ではローカルポートが異なりますか?

+0

あなたはおそらく、sshのポートを指定する必要があります( 'int型次に、remoteport = 22;');それでも問題が解決しない場合は、プロバイダに相談する必要があります。 –

+0

mysqlにはポート「3306」が使用されます。あなたはsshで何をしたいですか? ssh経由のリモートsshまたはmysql接続のみ? –

+0

例外のstatcktraceを投稿できますか?あなたの手動接続が動作している場合は、MySQLポートの前方を含めます。その後、あなたのコードもうまくいくはずです。これまでに何も間違っていないので。 – SubOptimal

答えて

0

ここでは、問題の原因を特定するための手順はほとんどありません。それはあなたのJavaコードに関連していない可能性があります。

  1. が、これはすでに失敗した場合、SSHは一般
    ssh -v [email protected]
  2. で動作しているかどうかを確認するために、最初のシェルからSSH接続を試してみてください - >これは
    ssh -v [email protected] -L 2022:127.0.0.1:3306
    を試みる成功した場合、あなたがする必要がありますホスト管理者
  3. を尋ねますローカルポート経由でMySQLへ接続することができ、今2022
  4. これが失敗した場合 - >これはあなたのJavaコードで問題を探してみてくださいsuceeds場合
  5. をホスト管理者に確認してください

SSHトンネルとMySQLのためのいくつかの有用なリンク:MySQL Remote Connectivity: SSH-Tunnel, HTTP-Tunnel

+0

-v user @ hostの場合、パスワードを入力する必要はありませんか?そしてホストのために私はipとportを入力するのですか? – fontquest

+0

@fontquest ** 1)**この場合、手動で入力する必要のあるパスワードです。 ** 2)**あなたの投稿されたコードでは、SSHサーバーのポートも指定していませんでした。標準のものを使用します。これは「22」です。 – SubOptimal

+0

私はシェルを介して、私は自分のパスワードを入力する必要がありますか?どうすればいいですか? – fontquest

関連する問題