Хорошо, вот моя проблема.Как пройти через брандмауэр из 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 логин и к брандмауэру. Если я использую telnet (порт 23) вместо ssh (порт 22) из командной строки Windows, есть возможность войти в этот брандмауэр оттуда.
Можно ли подключиться к этому брандмауэру из кода Java (используя JSch или какую-либо другую библиотеку java)?
Возможно, вы можете, но этот подход зависит от протокола вашей программы, с которой вы пытаетесь установить соединение. В Java есть библиотеки с такого низкого уровня, как сокеты, на такой высокий уровень, как Http Client. Итак, какой сервис или процесс вы подключаете? А какой протокол аутентификации используется для проверки подлинности брандмауэром? – bell0