Я не могу подключить защищенный сервер к одному серверу unix к другому unix-серверу. С помощью putty by ssh я могу легко подключиться, но я беру ошибку ниже при подключении от jsch.
успешная шпатлевка Steps-> подключить сервер1 в putty-> на successful-> Подключить сервер2 с помощью "ssh user @ip"
jsch Steps- ->
Подключено session1--> один сервер подключен //comment--> запущена команда на сервере 1 для подключения другого сервера
Ошибка: - псевдотерминал не будет выделен, потому что stdin не является терминалом. Разрешение отклонено, повторите попытку. Разрешение отклонено, повторите попытку. Разрешение отклонено (публикация, пароль, интерактивная клавиатура). ksh: changeme: не обнаружено Статус выхода: 127
Jsch sample program-->
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
jsch.setKnownHosts("C://known_hosts.txt");
session=jsch.getSession(user1, server1, 22);
session.setPassword(password1);
session.setConfig(config);
session.connect();
System.out.println("Connected session1");
String command ="ssh"+" "+"user@ip;"+"password" ;
channel=session.openChannel("exec");
((ChannelExec)channel).setCommand(command);
channel.setInputStream(null);
InputStream in=channel.getInputStream();
((ChannelExec)channel).setErrStream(System.err);
channel.connect();
byte[] tmp=new byte[1024];
while(true){
while(in.available()>0){
int i=in.read(tmp, 0, 1024);
if(i<0)break;
System.out.print("server 1"+new String(tmp, 0, i));
}
if(channel.isClosed()){
System.out.println("exit-status: "+channel.getExitStatus());
break;
}
try{Thread.sleep(1000);}catch(Exception ee){}
channel.disconnect();
session.disconnect();
Я добавляю важную часть ответа: -
JSch jsch = new JSch();
jsch.setKnownHosts("C:/My Program Files/eclipse/workspace/StatusTracker/known_hosts.txt");
// jsch.setKnownHosts(knownHostLoc);
//Jump server connection session started
jumpServerSession = jsch.getSession(userid, jump server ip/hostname, 22);
jumpServerSession.setPassword(jump server password);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
jumpServerSession.setConfig(config);
jumpServerSession.connect();
System.out.println("The session has been established to "+jump server userid+"@"+jump server name);
int assinged_port = jumpServerSession.setPortForwardingL(0, other server ip, 22);
System.out.println("portforwarding: "+
"localhost:"+assinged_port+" -> "+other server ip+":"+22);
//Main server connection session started
targetServerSession = jsch.getSession(fileBO.getServerUserId(), "127.0.0.1", assinged_port);
targetServerSession.setHostKeyAlias(other server ip);
targetServerSession.setPassword(other server password);
java.util.Properties config1 = new java.util.Properties();
config1.put("StrictHostKeyChecking", "no");
targetServerSession.setConfig(config1);
targetServerSession.connect();
channel = targetServerSession.openChannel("sftp");
channel = targetServerSession.openChannel("exec");
//command want to execute on dest server
((ChannelExec)channel).setCommand("pwd");
channel.setInputStream(null);
InputStream in11=channel.getInputStream();
((ChannelExec)channel).setErrStream(System.err);
channel.connect();
byte[] tmp1=new byte[1024];
while(true){
while(in11.available()>0){
int i1=in11.read(tmp1, 0, 1024);
if(i1<0)break;
System.out.print(new String(tmp1, 0, i1));
}
if(channel.isClosed()){
System.out.println("exit-status: "+channel.getExitStatus());
break;
}
try{Thread.sleep(1000);}catch(Exception ee){}
}
} catch (final JSchException e) {
LOGGER.error(e.getMessage());
}
1. int assinged_port = jumpServerSession.setPortForwardingL(0, other server ip, 22);
: - вот почему мы даем локальный порт как 0 ?? Не должно быть 22 вместо этого. Поскольку этот Локальный порт является портом Jump-Server2. targetServerSession = jsch.getSession(fileBO.getServerUserId(), "127.0.0.1", assinged_port);
: - Здесь, при создании основного сеанса с 3-м сервером, мы передаем IP как LocalHost. Почему ?? , Пожалуйста, исправьте мое понимание неверно. Я новичок в соединениях SSH.fileBO
........ В вашем ответе есть 6 необъявленных переменных, как, черт возьми, это принимается?