以前に、SSHへのリモートアクセスのための一連のコードを作成しました。最近、要件があり、ターゲットサービスにアクセスするにはジャンプマシンを使用する必要があります。長い間オンラインで検索した後、私はより良い例を見つけることができなかったので、私は自分でJSCH APIを調べました。しかし、私はそれを霧の中で見ました。結局のところ、私はそれについて考えています。ターゲットノードIP:ポートをlocalhost:ポートにマッピングするためのポート転送の原則であり、localhost:ポートを介してメッセージを送信してターゲットノードに到達しますか?
この推論により、前のコードを変更しました。
JSCHを介してターゲットノードサーバーに接続する元のコードについてはあまり言いません。私はそれをするためにBaiduを使用します、そして、オンラインでたくさんあります。
以下は変更されたコードです。
/ ** * @Param IP Jump Host * @Param Username Jump Username * @Param PWDジャンプパスワード * @Paramポートジャンプポート * @return ChannelsFTP RETURN VALUE * @TROWS JSCHEXCEPTION CONNETIONINEXCENCETION */ public Static ChannelSftp Connect(String IP、String Username、String PWD、INT PORT = PORT = PORT = 0; } session sshsession = null; jsch jsch = new jsch(); sshsession = jsch.getSession(username、ip、port); sshsession.setPassWord(PWD);プロパティsshconfig = new Properties(); sshconfig.put( "stricthostkeychecking"、 "no"); sshconfig.put( "PreferredAuthentications"、 "Password、keyboard-interactive"); sshsession.setconfig(sshconfig); sshsession.connect(tmout); //タイムアウトを設定できます//ローカルsshsession.setportforwardingl(ローカルポート、ターゲットノードアドレス、22)にマッピングされたポートの一部。 //アピールマッピングを完了した後、セッションセッション= jsch.getSession( "Target Service username"、 "127.0.0.1"、Local Port)に接続できます。プロパティremotecfg = new Properties(); Remotecfg.put( "stricthostkeychecking"、 "no"); Remotecfg.put( "PreferredAuthentications"、 "Password、Keyboard-interactive"); session.setconfig(remotecfg); session.setPassWord( "ターゲットサービスパスワード"); session.connect(); //将来自分で変更する方法は?オンラインで使用される多くのチャネルがあります。 Channel =(Channel)session.openchannel( "SFTP"); // SFTP通信Channel.Connect();を作成します; channelsftp sftp =(channelsftp)チャネル; sftpを返します。 }
最後に、テストはSFTPを介してターゲットノードのディレクトリにアクセスするために使用され、成功しました。
JSCHフレームワークを使用してジャンプマシンを介して他のノードにアクセスする上記の方法は、私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。