원격 컴퓨터에서 파일을 가져오는 sftp 스크립트

원격 컴퓨터에서 파일을 가져오는 sftp 스크립트

다음 줄이 포함된 스크립트를 사용합니다.

sftp    [email protected]:/dir/file.txt

스크립트를 실행하면 비밀번호를 묻습니다.

[email protected]'s password:

그러나 비밀번호를 묻는 메시지를 표시하고 싶지 않습니다. 내 스크립트가 자동으로 비밀번호를 입력하고 파일을 다운로드하도록 하고 싶습니다.

여러분, 저는 이런 일을 하고 싶지 않습니다. 스크립트에서 프롬프트를 포착하고 비밀번호를 입력하고 싶습니다. 가능합니까?

sshpass는 bash에 속합니까?

이건 전혀 작동하지 않습니다

답변1

SFTP는 기본적으로 서버 측 SSH + SFTP이므로 개인 키와 공개 키와 같은 일종의 비대화형 인증이 필요합니다. 사용 중인 운영 체제에 따라 명령을 사용하여 키를 생성 ssh-keygen하고 공개 키를 서버에 복사할 수 있습니다 ssh-copy-id.

답변2

가장 간단한 방법:

sshpass -p 'password123' scp -- [email protected]:/dir/file.txt /local/dir

sshpass작동해야 하며 sftp... 작성된 비밀번호로 스크립트의 권한을 확인하는 것을 잊지 마세요.

고쳐 쓰다:다음 명령을 통해 sshpass를 설치해야 합니다(debian 기반 배포판의 경우).

apt-get install sshpass

답변3

이 프로세스를 자동화하는 또 다른 방법은 Expect 스크립트를 사용하는 것입니다. 예는 다음과 같습니다.

예를 들어:

  #!/usr/bin/expect -f

   spawn sftp [email protected]:/dir/file.txt
   expect "[email protected]'s password :"
   send "mypassword123\r"
   send "exit\r"

예상되는 내용에 대한 자세한 정보를 얻을 수 있습니다.여기아니면 그냥 구글링해봐

답변4

비밀번호가 필요하지 않도록 키 기반 인증을 사용해야 합니다.

이를 수행하는 방법에 대한 자세한 방법은 다음과 같습니다. http://www.debian-administration.org/article/530/SSH_with_authentication_key_instead_of_password

관련 정보