Saya sebelumnya telah membuat satu set kode untuk akses jarak jauh ke SSH. Baru -baru ini, ada persyaratan dan saya harus melalui mesin lompat untuk mengakses layanan target. Setelah mencari secara online untuk waktu yang lama, saya tidak dapat menemukan contoh yang lebih baik, jadi saya melihat melalui JSCH API sendiri. Tapi saya melihatnya dalam kabut. Lagi pula, saya memikirkannya, adalah prinsip penerusan port untuk memetakan node target IP: port ke localhost: port, dan kemudian mengirim pesan melalui port localhost: untuk mencapai node target?
Dengan inferensi ini, saya memodifikasi kode sebelumnya.
Saya tidak akan banyak bicara tentang kode asli yang terhubung ke server node target melalui JSCH. Saya akan menggunakan Baidu untuk melakukannya, dan ada banyak online.
Berikut ini adalah kode yang dimodifikasi:
/ ** * Dapatkan koneksi * @param IP Jump Host * @param Nama pengguna lompatan nama pengguna * @param pwd lompatan Kata sandi * @param port lompatan port * @return channelsftp nilai pengembalian * @throws jschexception connection Exception */ portatic channelsftp connectp (string ip, string username, string pwd, int throws port portictp (string ip, string username, string pwd, int throws port portatic (string ei) {0) {0) {0) {0) portsccept {0) {0) {0) oM {0 throws {string port (string o) {string {string o) } Sesi sshsession = null; Jsch jsch = jsch baru (); sshsession = jsch.getSession (nama pengguna, ip, port); sshsession.setPassword (PWD); Properti sshconfig = properti baru (); sshconfig.put ("stricthostKeyChecking", "no"); sshconfig.put ("preferredAuthentications", "kata sandi, keyboard-interactive"); sshsession.setConfig (sshconfig); sshsession.connect (tmout); // batas waktu dapat diatur // bagian dari port yang dipetakan ke sshsession lokal.setportforwardingl (port lokal, alamat node target, 22); // Setelah menyelesaikan pemetaan banding, Anda dapat terhubung ke sesi sesi = jsch.getSession ("nama pengguna layanan target", "127.0.0.1", port lokal); Properti remotecfg = properti baru (); remotecfg.put ("stricthostKeyChecking", "no"); remotecfg.put ("preferredAuthentications", "kata sandi, keyboard-interactive"); session.setConfig (remotecfg); session.setPassword ("Kata Sandi Layanan Target"); session.connect (); // Bagaimana cara mengubahnya sendiri di masa depan? Ada banyak saluran yang digunakan secara online. Channel = (channel) session.openchannel ("sftp"); // buat saluran komunikasi sftp saluran.connect (); Saluran saluran sftp = (channelsftp); mengembalikan sftp; }Akhirnya, tes digunakan untuk mengakses direktori node target melalui SFTP, dan itu berhasil.
Metode di atas menggunakan kerangka JSCH untuk mengakses node lain melalui mesin lompat adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.