JSch会话连接

时间:2012-05-11 23:15:42

标签: java gwt jdbc ssh jsch

您好我正在尝试通过ssh隧道连接到服务器上的数据库,但我甚至无法连接Jsch会话。我试图在GWT中执行此操作作为我的后端代码的一部分。所以这是服务器端代码的Implementation部分。 我一般不熟悉服务器。通常在终端I中键入:

  

ssh -x username@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://'添加到主机字符串中,但无济于事。

提前致谢!

2 个答案:

答案 0 :(得分:1)

我发现上面的代码没有问题。我将它复制/粘贴到一个简单的java main中,它工作正常。将相同的代码放入GWT后端似乎有问题。

答案 1 :(得分:0)

根据异常消息,似乎问题不是来自JSch。

请参阅java.sun.com上的Security and Permissions

  

所有applet和使用安全管理器调用的任何应用程序都必须   被授予明确的权限,以分开访问本地系统资源   从读访问到目录及其子目录所在的位置   程序被调用。 Java平台提供允许的权限   各种级别的访问不同类型的本地信息。

,请参阅SocketPermission部分。