2014-05-14 2 views
1

우리는 로컬에서 로컬 또는 원격 서버로 파일을 전송하기 위해 Spring 기반 환경에서 SFTP 어댑터를 제공하려고합니다. 그러나 사용자를 위해 구성된 암호가 없습니다 원격 위치에 있습니다. apache-commons VFS 또는 Jsch와 같은 모든 구현은 파일 전송을 위해 암호 또는 개인 키 쌍이 필요합니다. 사용자 정보를 얻는 다른 API에서 여러 변경을해야하므로 사용자에게 비밀번호를 구성 할 수 없습니다.암호/키 쌍이없는 원격 위치에 SFTP

어떻게 해결해야한다고 생각하십니까?

+0

파일 서버가 익명 액세스로 FTP를 사용하고있는 것처럼 들립니다. SFTP는 '안전한'파일 전송 프로토콜이므로 보안이 유지되어야합니다. 동일한 서버에 SFTP 서비스를 설정하면 다른 앱에서도 여전히 FTP 액세스를 사용할 수 있습니다. SFTP를 통해 연결된 시스템에서만 키 쌍이 필요합니다. – Damienknight

답변

0

사용자 로그인 및 암호 인증없이 SFTP를 수행하는 방법을 이해하지 못합니다. 사용자에게 빈 암호가있을 수 있습니다.

JSch하면 StrictHostKeyChecking를 사용할 수 있습니다

final int PORT = 22; 
// Server belongs to the model 
Server server = new Server("root", "password"); 
JSch client = new JSch(); 
Session session = client.getSession(server.getLogin(), server.getAddress(), PORT); 
// This is the important line! 
session.setConfig("StrictHostKeyChecking", "no"); 
session.setPassword(server.getPassword()); 
2

당신은 자동화 된 목적을 위해 필요한 암호없이 SFTP/SSH를 사용할 수 있습니다. 2 가지 방법, 당신의 선택.

1 - 비밀 키의 비밀번호가 비어있는 키 쌍을 만듭니다.

$ ssh를-Keygen은 -f myInsecureKey는 비밀을 (개인) 키 암호 (비밀번호)를 묻는

, 단지 엔터 : SSH-Keygen은을 사용합니다. 그런 다음 공개 키 (myInsecureKey.pub)를 가져 와서 원격 계정의 홈 디렉토리에있는 .ssh 디렉토리로 서버로 가져옵니다. 'authorized_keys'라고 이름을 지정해야합니다. 이미 존재하는 경우 새 키를 추가하십시오 (편집자를 사용하여 수행중인 작업을 확인하십시오). 그러나 비밀 키가 완전히 벗겨 졌으므로 권한을 조정하거나 보호해야합니다.

2 - 일반 SSH 키 쌍이있는 '에이전트'를 사용하십시오. 조금 복잡하지만 일단 대화가 끝나면 대화식으로 사용하기에 좋습니다. unix/mac에서 ssh-agent 명령은 클라이언트 시스템에서 개인용 키 - 서버를 실행합니다. 소스가 필요한 일부 셸 명령을 실행합니다. 이처럼 :

$ ssh를 에이전트> ~/스푸핑/.myAgentContactInfo

$ 원 ~/스푸핑/.myAgentContactInfo

에이전트를 사용하는 마지막 단계를 수행해야합니다 모든 쉘; .profile에 넣으면 새로운 쉘 윈도우가 열리게됩니다. 나는 각 사용자가 자신의 에이전트를 필요로한다고 생각한다.

그런 다음 비밀 키를 사용하여로드하십시오. $ ssh-add mySecretKey 이 단계는 초 키 암호를 요구하지만 그 이후에는 암호가 필요하지 않습니다.

이 두 가지 방법 모두 ssh 및 sftp와 함께 작동하며 ssh 라이브러리에서 작동합니다 (필자는 한번도 시도하지 않았습니다).

관련 문제