好的,這是我的問題。如何從java程序中通過防火牆
我正在使用本地工作站。我在防火牆後面有一些機器,我需要從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) {}
}
但我的程序也應該autmaticly登錄到防火牆。如果我從我的Windows命令行使用telnet(端口23)而不是ssh(端口22),則可以從此處登錄到此防火牆。
是否有可能從java代碼(使用JSch或其他java庫)登錄到防火牆?
你可能可以,但方法取決於你的程序試圖連接的協議。 Java的庫從Sockets級別低到Http Client級別。那麼你連接到什麼服務或流程?什麼是防火牆用於驗證您的身份驗證協議? – bell0 2013-03-20 14:28:47