لقد قمت سابقًا بإنشاء مجموعة من الرموز للوصول عن بُعد إلى SSH. في الآونة الأخيرة ، هناك شرط وأحتاج إلى الذهاب عبر آلة القفز للوصول إلى الخدمة المستهدفة. بعد البحث عبر الإنترنت لفترة طويلة ، لم أتمكن من العثور على مثال أفضل ، لذلك نظرت من خلال واجهة برمجة تطبيقات JSCH بنفسي. لكني رأيته في ضباب. بعد كل شيء ، أفكر في الأمر ، هو مبدأ إعادة توجيه المنفذ لتعيين عقدة IP المستهدف: منفذ إلى LocalHost: Port ، ثم إرسال رسالة عبر مضيف LocalHost: Port للوصول إلى العقدة المستهدفة؟
مع هذا الاستدلال ، قمت بتعديل الكود السابق.
لن أقول الكثير عن الكود الأصلي الذي يتصل بخادم العقدة الهدف من خلال JSCH. سأستخدم Baidu للقيام بذلك ، وهناك العديد من الإنترنت.
ما يلي هو الرمز المعدل:
/ ** * احصل على اتصال * param IP مضيف * param username Jump username * param pwd password * param port port port * @return value return * throws jschexception connection stispion */ public static Channelsftp connectp (string ip ، string pwd ، int port) throws jschexception } جلسة sshsession = null ؛ JSCH JSCH = New JSCH () ؛ sshSession = jsch.getSession (اسم المستخدم ، IP ، المنفذ) ؛ sshsession.setPassword (PWD) ؛ الخصائص sshConfig = خصائص جديدة () ؛ sshConfig.put ("StricthostkeyChecking" ، "no") ؛ sshConfig.put ("PreferredAuthentications" ، "كلمة المرور ، لوحة المفاتيح التفاعلية") ؛ sshsession.setConfig (sshConfig) ؛ sshsession.connect (tmout) ؛ // يمكن تعيين المهلة // جزء من المنفذ المعين إلى sshsession.setportforwardingl (المنفذ المحلي ، عنوان العقدة الهدف ، 22) ؛ // بعد الانتهاء من تعيين الاستئناف ، يمكنك الاتصال بجلسة الجلسة = jsch.getSession ("اسم المستخدم المستهدف للخدمة" ، "127.0.0.1" ، منفذ محلي) ؛ الخصائص remotecfg = خصائص جديدة () ؛ remotecfg.put ("stricthostkeychecking" ، "no") ؛ remotecfg.put ("preferredauthentications" ، "كلمة المرور ، لوحة المفاتيح التفاعلية") ؛ Session.setConfig (remotecfg) ؛ Session.setPassword ("كلمة مرور الخدمة الهدف") ؛ Session.connect () ؛ // كيف تغيرها بنفسك في المستقبل؟ هناك العديد من القنوات المستخدمة على الإنترنت. Channel = (Channel) Session.OpenChannel ("SFTP") ؛ // إنشاء SFTP Communication Channel.connect () ؛ قناة القنوات SFTP = (channelsftp) ؛ إرجاع SFTP ؛ }أخيرًا ، تم استخدام الاختبار للوصول إلى دليل العقدة الهدف من خلال SFTP ، وكان ناجحًا.
الطريقة أعلاه لاستخدام إطار JSCH للوصول إلى العقد الأخرى من خلال آلة القفز هي كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.