Кто-то попросил об этом , и есть pull-запрос , который содержит код, который каким-то образом был переписан до слияния, и кому-то удалось кодировать решение, основанное на выдвижная запрос . Однако в этой библиотеке нет примера окончательной версии.
Следовательно, это не очень помогает мне с моим ограниченным пониманием ssh и всего. В основном, я хочу решить два сценария:
обычный SSH-сеанс через несколько хостов перехода:
- user1@jump1.com
- user2@jump2.com
- user3@jump3.com
- admin@server.com
заканчивается в ssh-сеансе, где подключающийся пользователь может свободно работать в этой ssh-оболочке на server.com, то есть, что бы обычная ssh admin@server.com
-команда выполняла в оболочке на jump3.com.
как и выше, но заканчивается переадресацией порта на server.com:80
Это возможно с ssh ProxyCommand
, но я хочу закодировать это с помощью SSHJ. И вот где я не могу понять, как это сделать.
Что у меня сейчас есть
SSHClient hop1 = new SSHClient();
try {
Path knownHosts = rootConfig.getKnownHosts();
if (knownHosts != null) {
hop1.loadKnownHosts(knownHosts.toFile());
} else {
hop1.loadKnownHosts();
}
Path authenticationFile = hop1Config.getAuthenticationFile();
if (authenticationFile != null) {
KeyProvider keyProvider = hop1.loadKeys(authenticationFile.toString(), (String) null);
hop1.authPublickey(hop1Config.getUser(), keyProvider);
} else {
hop1.authPassword(hop1Config.getUser(), hop1Config.getPassword());
}
// I found these methods:
hop1.getConnection();
hop1.getSocket();
// and now what?
} catch (IOException e) {
logger.error("Failed to open ssh-connection to {}", hop1Config, e);
}
Я заметил класс LocalPortForwarder.DirectTCPIPChannel
, но я не знаю, с какими значениями мне следует его создавать или как потом использовать его с остальными.