gpt4 book ai didi

java - java程序如何穿越防火墙

转载 作者:行者123 更新时间:2023-11-30 04:27:20 25 4
gpt4 key购买 nike

好的,这就是我的问题。

我正在本地工作站上工作。我有一些机器位于防火墙后面,我需要从 java 代码登录到这台机器。为此,我想使用 JSch 库。如果我将这台机器的 IP 地址输入到 Web 浏览器,我将被重定向到防火墙登录页面,当我输入凭据时,我可以使用以下代码通过 ssh 登录到这台机器:

public void authenticate(String ip, String user, String password) {
JSch jsch=new JSch();
try {
Session session = jsch.getSession(user, ip, 22);
session.setPassword(password);
session.setUserInfo(new UserInfoImpl(password));
session.connect();
System.out.println("Yes!!");
session.disconnect();
} catch (JSchException e) {
e.printStackTrace();
}
}

private class UserInfoImpl implements UserInfo{

private String password;
public UserInfoImpl(String password){
this.password = password;
}

@Override
public String getPassphrase() { return null;}
@Override
public String getPassword() {return password;}
@Override
public boolean promptPassphrase(String arg0) {return true;}
@Override
public boolean promptPassword(String arg0) {return true;}
@Override
public boolean promptYesNo(String arg0) {return true;}
@Override
public void showMessage(String arg0) {}

}

但是我的程序也应该自动登录防火墙。如果我从 Windows 命令行使用 telnet(端口 23)而不是 ssh(端口 22),则可以从那里登录到此防火墙。

是否可以从 java 代码(使用 JSch 或其他 java 库)登录此防火墙?

最佳答案

盲目连接到端口 22 可能不会将您定向到防火墙的网页,因此 JSch 不会为您处理该问题。当您连接时,您将引发异常。捕获这个,然后你可以用普通的 http 调用端口 80 触发防火墙重定向,然后获取重定向,解析结果并发送带有正确表单数据的 HTTP POST。

如果防火墙形式和地址始终相同,您可以在尝试连接到 SSH 之前直接发送 POST。

您可以使用标准类,请参阅 Java - sending HTTP parameters via POST method easily

关于java - java程序如何穿越防火墙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15525553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com