2017-04-24 28 views
1

을 전환해야 할 때입니다 SFTP하는 JSch를 사용하여 따라 최대 : 우리의 서버 동안 내가 원래 질문을하기 때문에이 문제는 뒷전이었다까지 따라 하나는 사용자에게

Using JSch to SFTP when one must also switch user

관리 팀이 정책을 검토하지만 지금 다시 확인 중입니다!

JSch를 사용하여 원격 서버에 연결 한 다음 sftp 또는 scp를 사용하여 일부 파일에 액세스합니다. 원래 질문의 코드 예와 같습니다. 문제는이 파일들이 다른 사용자가 소유하고 있으므로 해당 사용자에게 su를하고 sftp 또는 scp 명령을 실행하기 전에 암호를 제공해야한다는 것입니다.

이것은 JSch에서 수행 할 수 없으며 exec 채널을 통해 암호를 전송할 수있는 보안상의 위험이 있기 때문에 이것이 옳습니다. 그래서 이것들은 내가 그들을 볼 때 앞으로 나아갈 옵션들입니다.

  1. JSch 기능을 재정의하십시오. Martin은 패스워드가 "백도어를 통해"전달되는 방법과 패스워드가 어떻게 전달 될 수 있는지에 대한 원래의 질문에 대한 답변에 도움이되는 정보를 제공했습니다. 하지만 JSch 코드를 재정의하는 능력에 확신이 없으며, 성공하더라도, 합법적 인 이유로 거기에있는 보안 기능을 우회 할 것이므로이 시도를 꺼려합니다.

  2. 서버에서 내 사용자에게 다른 사용자에게 암호가없는 액세스 권한을 부여하십시오. 이것은 내 서버 관리 팀이 동의하지 않을 경우 아니오입니다.

  3. 내 사용자가 파일에 액세스하기 위해 실행할 수있는 서버 측 .sh 스크립트가 있습니다. 다시 말하지만, 제 서버 관리 팀이 동의하지 않는 것은 아닙니다!

  4. 퍼티 세션을 자동화합니다. 즉, phsically put putty를 실행하고 Java 클라이언트의 행 단위로 putty 세션에 명령을 전달합니다.

  5. 포기하십시오! 여기서 내가 자동화해야하는 것이 아닌 수동 테스트를 대신 수행하려는 무언가를하려한다는 것을 받아 들여야합니까?

나는 어떤 생각 /지도에 대해서도 매우 감사 할 것입니다.

답변

1

여기서는 자동화해서는 안되는 작업을하려고합니다.

원칙은 정확합니다.

유일한 자동 해결 방법은 파일에 대한 액세스 권한이있는 사용자와 직접 로그인하는 것입니다. 다른 모든 것은 해킹이나 보안 정책을 둘러싼 작업입니다. 응용 프로그램의 액세스를 모니터링하고 액세스를 제어 할 수 있도록 전용 개인 키로 인증하는 것이 가장 이상적입니다 (예 : 동일한 계정의 다른 용도에 영향을주지 않고 일시적으로 해제).

시스템 관리자가 보안 문제가 무엇인지 (예기치 않은 경우) 예측할 수 없으므로 시스템 관리자가 직접 로그인을 허용하지 않는다고 생각할 수도 있습니다.

+0

이 질문에 항상 답변 해 주신 데 대해 감사드립니다. Martin. 당신은 내가 생각한 것을 확인했습니다. 그리고 당신 말이 맞아요, 내 관리자는 다른 사용자로서 직접 액세스를 허용하지 않을 것입니다. 우리 팀이 stackoverflow에서 우리의 교류를 알리도록하겠습니다. 그리고이 특별한 테스트에 적어도 몇 가지 수동 단계가 필요하다는 데 모두 동의 할 수 있기를 바랍니다. –

1

샘플 JSch 예제 인 JumpHosts를 적용하여이 질문에 대한 해결책을 얻었습니다.

http://www.jcraft.com/jsch/examples/JumpHosts.java

MyUserInfo 날 자동으로 물리적 키보드를 사용하지 않고도 등 프롬프트 상자, 입력 상자를 수락 할 수 정적 클래스의 상속 방법을 재정의, 그래서 원하는대로 나는 완전 자동화 된 테스트가 있습니다.

jcraft 팀이 이러한 유용한 작업 예제를 제공하는 것은 대단한 일입니다. 시간을내어 내 질문을 읽고 생각 해준 모든 사람들에게 감사드립니다.

편집 : 마틴의 의견에 따르면,이 방법은 로컬 호스트에서 직접 user2 로그인을 허용하는 SSH 구성의 특별한 규칙이있는 경우에만 작동한다는 점을 지적해야합니다 (직접 원격 로그인을 허용하지 않음). 그건 sudo가 아니야. 그래서 이것은 일반적으로 작동하지 않습니다.

+0

포트 포워딩 예제는 sudo와 어떤 관련이 있습니까? –

+0

두 개의 인수를 사용하여 포트 전달 예제를 호출하는 경우 user1 @ hostname 및 user2 @ localhost 여기서 user1은 내 개인 사용자이고 user2는 원하는 파일에 대한 액세스 권한이있는 사용자입니다 (user1은 직접 액세스 할 수 없음) 그것은 대접을한다! –

+0

하지만 SSH 설정에서'localhost'에서 직접'user2' 로그인을 허용하는 특별한 규칙이있는 경우에만 작동 할 수 있습니다 (직접 원격 로그인을 허용하지 않음). 그건 sudo가 아니야. 그래서 이것은 일반적으로 작동하지 않습니다. 대답에 언급할만한 가치가 있습니다. –