我可以在Ubuntu上建立端口转发会话,方法如下:
ssh -L 8000:dev.mycompany.com:443 jump.mycompany.com
现在我想用Jsch来模拟这个过程:
然而,在隧道设置完毕后,我尝试使用RestTemplate(Spring HTTP客户端——但是CURL也会出现错误)连接它时,会出现以下异常:
我需要在Jsch中进行哪些配置才能使其与openssh客户端完全相同?
ssh -L 8000:dev.mycompany.com:443 jump.mycompany.com
现在我想用Jsch来模拟这个过程:
public static void openTunnel() {
JSch jsch = new JSch();
String privateKey = "~/.ssh/id_rsa";
try {
jsch.addIdentity(privateKey);
log.info("Connecting to {}@{}", getJumpUser(), getJumpServer());
Session session = jsch.getSession(getJumpUser(), getJumpServer(), 22);
session.connect();
session.setPortForwardingL(8000, getHost(), 433);
} catch (JSchException e) {
log.error("", e);
}
}
然而,在隧道设置完毕后,我尝试使用RestTemplate(Spring HTTP客户端——但是CURL也会出现错误)连接它时,会出现以下异常:
ssl.SSLHandshakeException: Remote host closed connection during handshake
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:744)
我需要在Jsch中进行哪些配置才能使其与openssh客户端完全相同?
/var/log/auth
,可能会有一些提示。 - jebcurl https://localhost:8000
命令可以使用ssh
运行,它应该会抛出类似于curl: (51) SSL: no alternative certificate subject name matches target host name 'localhost'
的错误信息。 - jeb