0

こんにちは、サーバー上のデータベースに ssh トンネリング経由で接続しようとしていますが、Jsch セッションを接続することさえできません。バックエンド コードの一部として GWT でこれを実行しようとしています。したがって、これはサーバー側コードの実装部分にあります。私は一般的にサーバーに精通していません。通常、ターミナルで次のように入力します。

ssh -x ユーザー名@xxxxx.xxx.edu

次に、パスワードの入力を求められ、パスワードを入力するとログインできます。

したがって、Javaでの私のコードは次のとおりです。

String host="xxxxx.xxx.edu";

String user="username";
String password="password";

Session session= null;
try{
            //Set StrictHostKeyChecking property to no to avoid UnknownHostKey issue
            java.util.Properties config = new java.util.Properties();
            config.put("StrictHostKeyChecking", "no");
            JSch jsch = new JSch();
            session=jsch.getSession(user, host, 22);
            session.setPassword(password);
            session.setConfig(config);
            session.connect();
}

ユーザー名とパスワード、およびホスト文字列を再確認しましたが、それらはすべてターミナルで正常に使用しているものです。

「session.connect()」行で表示されるエラーは次のとおりです: (右にスクロールしてエラー全体を表示します)

com.jcraft.jsch.JSchException: java.security.AccessControlException: access denied (java.net.SocketPermission xxxxx.xxx.edu resolve)
at com.jcraft.jsch.Util.createSocket(Util.java:341)
at com.jcraft.jsch.Session.connect(Session.java:194)
at com.jcraft.jsch.Session.connect(Session.java:162)
at com.front.server.GameServiceImpl.createGame(GameServiceImpl.java:39)

足りないものはありますか?これは、ssh 経由でサインインするためにターミナルで行うことと同じではありませんか? また、「ssh://」をホスト文字列の前に追加しようとしましたが、役に立ちませんでした。

前もって感謝します!

4

2 に答える 2

1

上記のコードで問題ないことがわかりました。それをコピーして単純なJavaメインに貼り付けたところ、うまくいきました。同じコードを GWT バックエンドに配置すると、何か問題があるようです。

于 2012-05-12T16:50:22.907 に答える
0

例外メッセージによると、問題は JSch に起因するものではないようです。

java.sun.com のSecurity and Permissionsを参照してください。

セキュリティ マネージャで呼び出されるすべてのアプレットとアプリケーションには、プログラムが呼び出されるディレクトリとそのサブディレクトリへの読み取りアクセスとは別に、ローカル システム リソースにアクセスするための明示的なアクセス許可が付与されている必要があります。Java プラットフォームには、さまざまな種類のローカル情報へのさまざまなレベルのアクセスを許可するアクセス許可が用意されています。

、およびSocketPermissionセクションを参照してください。

于 2012-05-12T23:25:53.823 に答える