쉘 스크립트에서 SCP를 사용할 때 비밀번호 프롬프트에 응답하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1462284

문제

우선, 나는이 주제에 관한 많은 질문이 있다는 것을 잘 알고 있습니다. 나는 그것들을 읽었지만 여전히 내 상황에 대한 적절한 답을 찾을 수있었습니다.

나는하고 싶다 scp 전체 ~/cs###/assign1 쉘 스크립트가있는 지역에서 학교 집으로 딥. 내 질문은 내 스크립트에 암호 프롬프트를 기다린 다음 키 보드 이벤트를 비밀번호에서 '타이핑'하도록 시뮬레이션하는 방법이 있습니까?


여기 키를 설정하는 방법에 대한 세부적인 가이드입니다.

도움이 되었습니까?

해결책

SSH 키는 허용되지 않습니까? 그것은 더 나은 솔루션이 될 것입니다.

다른 팁

"Sshpass"를 사용하십시오!

#!/bin/bash
sshpass -p "password" scp -r /some/local/path user@example.com:/some/remote/path

나는 당신이 쉽게 할 수 있다고 생각하지 않습니다. 당신이 ~할 수 있다 대신 공개 키 인증을 사용하고 있습니다.

이 라인을 따라 뭔가

ssh-keygen -t rsa
ssh school mkdir .ssh/
cat ~/.ssh/id_rsa.pub | ssh school "cat >>.ssh/authorized_keys"

(또는 dsa).

하지만 이봐, 그것은 ServerFault가 아니야? ;-)

키 또는 외부 라이브러리 사용을 고려하십시오.

나는 그것이 자동 인력 침입과 암호의 스니핑을 부과하기 때문에 그것이 가능하다고 생각하지 않습니다 (내가 틀리지 않기를 바랍니다).

원하는대로 수행 할 수있는 라이브러리가 있습니다 (SFP를 호출하지 않고 SFTP 프로토콜 사용). libssh.

다시, 나는 키를 강력히 추천합니다.

키를 사용해야한다는 데 동의합니다. 하지만 예상하다 비밀번호를 일반 텍스트 스크립트 파일로 하드 코딩하려면 프로세스의 대화식 측면을 자동화 할 수 있습니다.

Windows 시스템 (예 : 제 대학의 Windows Labs가 한 SMB를 통해)에서 디렉토리를 장착 할 수 있다면 사용할 수 있습니다. PSCP -pw 스위치와 함께.

"-r"옵션을 사용하여 재귀 적으로 복사하지 않겠습니까? 아니면 대신 rsync를 사용합니까?

또한 실제 사용자 계정이있는 한 최종에 도움이 필요하지 않은 공개 키 인증을 사용할 수도 있습니다. 보다 이것

집과 학교에서 어떤 플랫폼을 사용하고 있는지는 말하지 않습니다. Linux, Cygwin 또는 OS/X를 가정하면 몇 가지 옵션이 있습니다.

  1. 서버에서 꺼지지 않은 경우 공개 키 인증
  2. SSH-Agent 및 SSH-ADD는 세션 당 1 회 비밀번호를 입력 할 수 있습니다.

옵션 (1)의 경우

  1. SSH-Keygen을 사용하여 집에서 키패어를 생성하며 개인 키에는 암호가 없습니다. 다른 사람들이 동일한 컴퓨터를 사용하는 경우 암호를 생략하는 것은 아마도 좋은 생각이 아니지만, 당신의 목표는 비밀번호를 입력 해야하는 것이 었습니다.
  2. 공개 키를 학교 계정에 업로드하고 ~/.ssh/alustized_keys에 배치하십시오.
  3. IdentityFile이 개인 키의 전체 경로 인 "-i eventityFile"옵션과 함께 SCP를 사용하십시오. 또는 .ssh/config에 항목을 추가합니다 (Man Pages 참조)

두 번째 옵션의 경우 SSH-Agent를 사용하면 세션 당 한 번에 로컬 프로세스로 암호를 캐시 할 수 있습니다. 만료 시간을 설정합니다

많은 사람들이 이미 SSH 키를 사용하는 것이 가장 안전하고 가장 좋은 방법이라고 말했듯이 이미 말했듯이. 다른 사람이 여전히 궁금해하고 도움을 찾고 있다면, 우분투에는 빠르고 간단한 것이 있습니다. 방법 SSH 키를 사용합니다.

일단 설정하면 ssh-keygen 설명 된 바와 같이 여기, 넌 할 수있어

scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/

어디 id_rsa 로컬 키가 생성됩니다 ssh-keygen 설정.

매번 입력을 줄이려면 수정할 수 있습니다. .bash_profile 파일과 넣습니다

alias remote_scp='scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/

그런 다음 터미널에서 source ~/.bash_profile. 나중에 입력하면 remote_scp 터미널에서는 실행해야합니다 scp 비밀번호가없는 명령.

시스템에서 자동 으로이 작업을 수행 할 수있는 방법을 찾지 못했습니다. 하나의 장치에 SSH를 한 다음 SSH를 다음 장치로, 둘 다 다른 소프트웨어를 설치할 수 없습니다. 따라서 기존 쉘 스크립트 명령 만 사용할 수 있습니다. *.png와 같은 모든 파일을 *.png와 같은 모든 파일 또는 스크립트 파일에서 하나씩 복사하여 각 개별 파일의 비밀번호를 입력해야합니다. 내가 한 중 하나는 도움이 된 한 가지는 암호를 파일에 입력하고 자르고 각 파일에 대해 각 프롬프트에 붙여 넣을 수있는 것이 었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top