当我的servlet尝试从Tomcat进行SSH时,访问被拒绝

时间:2009-10-16 17:15:39

标签: tomcat servlets

我编写了一个使用库ganymed-ssh2-build210.jar的Servlet(它使用这些类:import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session; import ch.ethz.ssh2 .StreamGobbler;)通过SSH连接运行命令(出于测试目的,它连接到我的本地机器)。当我将我的类作为一个独立的应用程序运行时它可以工作,但当我将它部署到Tomcat并且Tomcat将它作为Servlet启动时,我得到了这个例外(我已经切断了结束,因为我认为它可能不相关,但如果有帮助的话,我可以把它全部包括在内:

java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:22 connect,resolve)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at java.lang.SecurityManager.checkConnect(SecurityManager.java:1034)
    at java.net.Socket.connect(Socket.java:513)
    at ch.ethz.ssh2.transport.TransportManager.establishConnection(TransportManager.java:340)
    at ch.ethz.ssh2.transport.TransportManager.initialize(TransportManager.java:448)
    at ch.ethz.ssh2.Connection.connect(Connection.java:643)
    ...

这可能与安全策略有关吗?如果是这样,你知道我如何改变它们吗?

我正在使用Java 1.6和Tomcat6。

2 个答案:

答案 0 :(得分:0)

看起来java在端口22上被拒绝访问 - 您确定要尝试连接作为客户端,而不是生成服务器吗?如果它试图将侦听器绑定到端口22,除非您以超级用户身份运行,否则很可能会出现错误。

答案 1 :(得分:0)

您是否在启用-security参数的情况下运行Tomcat?如果是这样,您需要编辑$ CATALINA_BASE / conf / catalina.policy并允许ch.ethz.ssh2.transport访问java.net.Socket。