2017-05-07 59 views
0

我在使用官方JavaScript代码的客户端上使用Guacamole 0.9.12-incubating - 服务器端延伸GuacamoleHTTPTunnelServlet。 Guacamole服务器从源代码编译并运行在Ubuntu 17.04上。Guacamole SSH断开连接,没有键盘

SSH连接成功建立,但15秒后断开连接。没有键盘笔画和鼠标正在工作。

May 7 17:14:09 dev guacd[4071]: Creating new client for protocol "ssh" 
May 7 17:14:09 dev guacd[4071]: Connection ID is "$30e2e833-5640-4bc9-92c3-929ced3d6e0e" 
May 7 17:14:09 dev guacd[4382]: User "@4209df46-e26a-4ced-93c4-c264578f85a5" joined connection "$30e2e833-5640-4bc9-92c3-929ced3d6e0e" (1 users now present) 
May 7 17:14:10 dev guacd[4382]: SSH connection successful. 
May 7 17:14:24 dev guacd[4382]: User is not responding. 
May 7 17:14:24 dev guacd[4382]: User "@4209df46-e26a-4ced-93c4-c264578f85a5" disconnected (0 users remain) 
May 7 17:14:24 dev guacd[4382]: Last user of connection "$30e2e833-5640-4bc9-92c3-929ced3d6e0e" disconnected 
May 7 17:14:25 dev guacd[4382]: SSH connection ended. 
May 7 17:14:25 dev guacd[4071]: Connection "$30e2e833-5640-4bc9-92c3-929ced3d6e0e" removed. 

客户端JavaScript与文档中的相同 - https://guacamole.incubator.apache.org/doc/gug/writing-you-own-guacamole-app.html

当我在servlet中使用方法时,它们向我展示了按键笔画。所以问题可能在servlet和guacd之间?

@Override 
protected void doWrite(HttpServletRequest request, HttpServletResponse response, String tunnelUUID) throws GuacamoleException { 
     LOGGER.debug("Do WRITE to session " + tunnelUUID); 
     super.doWrite(request, response, tunnelUUID); 
    } 

@Override 
protected void doRead(HttpServletRequest request, HttpServletResponse response, String tunnelUUID) throws GuacamoleException { 
     LOGGER.debug("Do read to session " + tunnelUUID); 
     super.doRead(request, response, tunnelUUID); 
    } 

连接已经建立,但没有击键工作: SSH connection established (in browser)

感谢。

回答

0

问题出现在Spring Boot中,正如那里讨论的那样 - https://glyptodon.org/jira/si/jira.issueviews:issue-html/GUAC-1252/GUAC-1252.html

解决方案是创建自己的实现的HiddenHttpMethodFilter

@Configuration 
public class GuacamoleServletConfiguration { 

    @Bean 
    public GuacamoleServlet guacamoleTunnelServlet() { 
     return new GuacamoleServlet(); 
    } 

    @Bean 
    public ServletRegistrationBean servletRegistrationBean() { 
     ServletRegistrationBean bean = new ServletRegistrationBean(guacamoleTunnelServlet(), "/remote/tunnel"); 
     bean.setOrder(Ordered.HIGHEST_PRECEDENCE); 
     return bean; 
    } 

    @Bean 
    public HiddenHttpMethodFilter hiddenHttpMethodFilter() { 
     return new HiddenHttpMethodFilter() { 
      @Override 
      protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { 
       if ("POST".equals(request.getMethod()) && request.getRequestURI().startsWith("/remote/tunnel")) { 
        filterChain.doFilter(request, response); 
       } else { 
        super.doFilterInternal(request, response, filterChain); 
       } 
      } 
     }; 
    } 
} 
相关问题