【发布时间】:2013-03-09 15:58:48
【问题描述】:
好的,这是我的问题。
我正在本地工作站上工作。我在防火墙后面有一些机器,我需要从 java 代码登录到这台机器。为此,我想使用 JSch 库。如果我将这台机器的 ip 地址输入到网络浏览器,我将被重定向到防火墙登录页面,当我输入我的凭据时,我可以使用 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 库)登录到此防火墙?
【问题讨论】:
-
您可能可以,但该方法取决于您的程序尝试连接的协议。 Java 的库从低到 Socket 到高到 Http 客户端。那么您连接到什么服务或流程?防火墙用来对您进行身份验证的身份验证协议是什么?