在远程服务器上发放SSH以跳到另一台服务器并使用Java和JSch

问题描述 投票:0回答:0

可连接到远程计算机RM1。

可在RM1上执行单个/多个命令(遵循此

Https://www.journaldev.com/246/jsch-ch--example-java-java-ssh-unix-server,和

https://stackover.com/a/a/a/5831846/877773024,。

可连接到远程计算机RM1,然后再次连接到另一台远程计算机RM2。
  1. 无法执行此步骤, 1。一旦我连接到远程计算机RM2之后,无法执行任何命令。
  2. 请让我知道是否有人可以帮助我。 我尝试了此代码:
  3. String host="IP"; String user="username"; String password="password"; String command1="pwd"; String command2="ssh -tt user@ip"; String command3="pwd"; java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); JSch jsch = new JSch(); Session session=jsch.getSession(user, host, 22); session.setPassword(password); session.setConfig(config); session.connect(); System.out.println("Connected"); Channel channel1=session.openChannel("exec"); ((ChannelExec)channel1).setCommand(command1;command2;command3); channel1.setInputStream(null); ((ChannelExec)channel1).setErrStream(System.err); InputStream in1=channel1.getInputStream(); channel1.connect(); byte[] tmp=new byte[1024]; while(true){ while(in1.available()>0){ int i=in1.read(tmp, 0, 1024); if(i<0)break; System.out.print(new String(tmp, 0, i)); } if(channel1.isConnected()){ System.out.println("exit-status: "+channel1.getExitStatus()); break; } try{Thread.sleep(1000);}catch(Exception ee){} } channel.disconnect(); session.disconnect(); System.out.println("DONE");
  4. 在连接到RM1的普通SSH终端客户端中执行
  5. pwd;ssh -tt user@ip;pwd
  6. 。它行不通,所以它在Java中也无法正常工作。
要进行“跳跃”,您应该使用端口转发(请参阅

JSCH

JumpHosts

示例

),而不是在跳跃服务器上执行

ssh

	
java shell ssh jsch
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.