Ранее я создал набор кодов для удаленного доступа к SSH. Недавно существует требование, и мне нужно пройти через машину для прыжков, чтобы получить доступ к целевой службе. После долгого поиска в Интернете в течение долгого времени я не смог найти лучшего примера, поэтому я сам просмотрел API JSCH. Но я видел это в тумане. В конце концов, я думаю об этом, является ли принцип пересылки портов для картирования целевого узла IP: порт на локальный хост: порт, а затем отправить сообщение через Localhost: Port для достижения целевого узла?
С этим выводом я изменил предыдущий код.
Я не буду много говорить о исходном коде, который подключается к серверу целевых узлов через JSCH. Я буду использовать Baidu, чтобы сделать это, и есть много онлайн.
Ниже приведено измененный код:
/** * Get the connection* @param ip Jump host * @param userName Jump username * @param pwd Jump password * @param port Jump port * @return ChannelSftp Return value * @throws JSchException Connection exception*/ public static ChannelSftp connect(String ip, String userName, String pwd, int port) throws JSchException { if (port <= 0) { port = PORT; } Session sshsession = null; Jsch jsch = new jsch (); sshsession = jsch.getsession (имя пользователя, ip, порт); sshsession.setpassword (pwd); Свойства sshconfig = new Properties (); sshconfig.put («Stricthostkeychecking», «Нет»); sshconfig.put («Предпочтительственные препараты», «Пароль, клавиатура-интерактивность»); sshsession.setconfig (sshconfig); sshsession.connect (tmout); // может быть установлен тайм -аут // часть порта, отображаемой с локальной sshsession.setportborwardingl (локальный порт, целевой адрес узла, 22); // После завершения сопоставления апелляции вы можете подключиться к сеансу Session = jsch.getSession («Имя пользователя целевого обслуживания», «127.0.0.1», локальный порт); Свойства remotecfg = новые свойства (); remotecfg.put («StricthostKeyChecking», «Нет»); remotecfg.put («Предпочтительственные препараты», «Пароль, клавиатура-интерактивность»); session.setconfig (remotecfg); session.setpassword ("Целевой пароль службы"); session.connect (); // Как это изменить самостоятельно в будущем? Есть много каналов, используемых в Интернете. Канал = (канал) session.openchannel ("sftp"); // Создать канал связи SFFTP Cannel.connect (); Канал канала Cannelsftp sftp = (Canelelsftp); вернуть SFTP; }Наконец, тест использовался для доступа к каталогу целевого узла через SFTP, и он был успешным.
Приведенный выше метод использования среды JSCH для доступа к другим узлам через машину для прыжков - это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.