У меня есть новый проект, где я должен подключиться к серверу S SH с прокси-сервером (который находится в помещении). Проблема в том, что если я не использую прокси, я получаю сообщение об ошибке «UnknownHost». Но когда я использую прокси, он говорит: «JSchException ProxySOCKS5: com.jcraft.jsch.JSchException: сбой в SOCKS5 прокси». Я довольно новичок в сокетах, прокси и всех подобных вещах, поэтому мы ценим каждый совет.
JSch jsch = new JSch();
jsch.setKnownHosts("known_hosts");
com.jcraft.jsch.Session session = null;
com.jcraft.jsch.ProxySOCKS5 proxy = new ProxySOCKS5("localhost", 20004);
proxy.setUserPasswd(userName, password);
URL url = new URL("http", "<remoteUrl>", 22, filePath, null);
session = jsch.getSession(userName, hostName, 22);
session.setPassword(password);
session.setProxy(proxy );
session.connect(10000);
Я пробовал другое направление, где я не использую jsch, только java . net. Этот код:
SocketAddress addr = new InetSocketAddress("localhost", 20004);
Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr);
final String encodedSubaccount = new String(Base64.encodeBase64(subaccount.getBytes()));
final String encodedLocationId = new String(Base64.encodeBase64(locationId.getBytes()));
char[] pwdHelp = [];
Authenticator.setDefault(new Authenticator() {
@Override
protected java.net.PasswordAuthentication getPasswordAuthentication() {
return new java.net.PasswordAuthentication("1." + encodedSubaccount + "." + encodedLocationId , pwdHelp);
}
});
URL url = new URL("http", "<remoteUrl>", 22, filePath, null);
HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);
При таком подходе ошибки не возникает, но когда я пытаюсь получить getResponseMessage () или код, он возвращает только -1 или ноль.
Может кто-нибудь помочь меня нет? Заранее спасибо