2015-01-27 1 views
0

1 단계 : 세션 연결Jsch를 사용하여 쉘 채널에서 다른 SFTP 서버로 파일을 업로드하는 방법은 무엇입니까?

.... 
session.connect() 

2 단계 : ssh를 실행 유닉스 서버에 로그인하고 필요한 경로 cd /logs/server

PrintStream shellStream = new PrintStream(channel.getOutputStream()); // printStream for convenience 
channel.connect(); 
shellStream.println(command); 
shellStream.flush(); 

로 이동 명령 : 쉘 채널 3 단계

channel = session.openChannel("shell"); 

4 단계 : Unix 서버에서 파일을 가져와 SFTP에 넣습니다.

code to connect sftp channel and put the file from unix server to sftp. 

SFTP 서버에 (쉘 채널을 사용하여 로그인 한) Unix 서버에서 파일 (logs/server/server.log)을 업로드하고 싶습니다.

원본과 대상 모두 원격입니다.

JSch를 사용하여 할 수 있습니까?

답변

0

SFTP 프로토콜 (JSch SFTP 라이브러리 만 사용)은 두 원격 서버 간의 전송을 지원하지 않습니다.

서버 중 하나에 대한 셸 액세스 권한이있는 경우 서버에서 명령 줄 (OpenSSH) sftp 클라이언트를 사용하여 파일을 전송하려고 할 수 있습니다. 그것은 가능합니다. 문제는 비대화 형 세션이므로 인증 부분입니다. 암호화되지 않은 개인 키 (에이전트 전달 또는 sshpass)를 사용해야합니다.


분명하고 간단한 구현은 로컬 컴퓨터에 "유닉스"서버에서 파일을 다운로드 한 후 "SFTP"서버에 업로드하는 것입니다. 그러나 다운로드를 위해서는 쉘 채널이 아닌 SFTP 채널을 사용해야합니다.

관련 문제