Ich habe zuvor eine Reihe von Codes für den Fernzugriff auf SSH erstellt. Vor kurzem besteht eine Anforderung und ich muss einen Sprunggerät durchgehen, um auf den Zieldienst zuzugreifen. Nachdem ich lange online gesucht hatte, konnte ich kein besseres Beispiel finden, also habe ich die JSCH -API alleine durchgesehen. Aber ich habe es in einem Nebel gesehen. Schließlich denke ich darüber nach, ist das Prinzip der Portweiterleitung, um den Zielknoten IP: Port an Localhost: Port zuzuordnen und dann eine Nachricht über Localhost: Port zu senden, um den Zielknoten zu erreichen?
Mit dieser Schlussfolgerung habe ich den vorherigen Code geändert.
Ich werde nicht viel über den ursprünglichen Code sagen, der über JSCH mit dem Zielknotenserver verbunden ist. Ich werde Baidu dazu verwenden, und es gibt viele online.
Das Folgende ist der geänderte Code:
/ ** * Nehmen Sie die Verbindung * @param IP Jump Host * @param Benutzername Jump Benutzername * @param PWD Jump Passwort * @param Port Jump Port * @Return Channelsftp Return Value * @throws JSCHECTECECE -Verbindungsverbindung Ausnahme */ public static Channelsftp Connect (String IP, String username, String pwd, int Port). } Session sshSession = null; JSCH JSCH = new JSCH (); sshSession = jsch.getSession (Benutzername, IP, Port); sshSession.setPassword (PWD); Eigenschaften sshconfig = neue Eigenschaften (); sshconfig.put ("strikthostkeychecking", "no"); sshconfig.put ("bevorzugteAuthentationen", "Passwort, Tastaturinteraktiv"); sshSession.setConfig (SSHConfig); sshSession.connect (TMout); // Das Zeitüberschreitung kann festgelegt werden // Der Teil des Ports, der der lokalen SSHSession.setPortforwardingl (lokaler Port, Zielknotenadresse, 22) zugeordnet ist; // Nach Abschluss der Beschwerdezuordnung können Sie eine Verbindung zu der Sitzungssitzung = JSCH.GetSession ("Zieldienst -Benutzername", "127.0.1", lokaler Port) herstellen. Eigenschaften remotecfg = neue Eigenschaften (); remotecfg.put ("striktHostKeychecking", "no"); remotecfg.put ("bevorzugteAuthentationen", "Passwort, Tastaturinteraktiv"); Session.setConfig (remotecfg); Session.setPassword ("Zieldienstkennwort"); Session.connect (); // Wie kann man es in Zukunft selbst verändern? Es werden viele Kanäle online verwendet. Channel = (Channel) Session Channelsftp SFTP = (Channelsftp) Kanal; Return SFTP; }Schließlich wurde der Test verwendet, um über SFTP auf das Verzeichnis des Zielknotens zuzugreifen, und es war erfolgreich.
Die obige Methode zur Verwendung des JSCH -Frameworks zum Zugriff auf andere Knoten über einen Sprunggerät ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.