스크립트에서 SFTP를 사용하여 원격 호스트에서 비대화식으로 파일을 가져오는 방법은 무엇입니까?

스크립트에서 SFTP를 사용하여 원격 호스트에서 비대화식으로 파일을 가져오는 방법은 무엇입니까?

쉘 스크립트를 사용하여 다른 서버에서 파일을 추출하고 싶습니다. 이 작업을 수행할 수 있는 스크립트를 작성했지만 스크립트가 비대화형으로 작동하여 비밀번호를 묻는 메시지가 표시되지 않고 동일한 내용을 하드코딩하고 스크립트에 필수 콘텐츠가 있으면 자동으로 작동하도록 하고 싶습니다. .

이전에 이 작업을 수행한 적이 있지만 FTP새 서버에서는 연결이 차단되어 or FTP만 사용할 수 있습니다 . 이전 스크립트는 다음과 같았는데, 비밀번호 없이도 잘 사용 하고 작업을 수행했습니다.SCPSFTPFTP

#!/bin/bash -vx
ftp -in 100.XXX.XXX.XX<<END_SCRIPT
quote USER username
quote PASS password
bin
prompt off
cd /directory/in/remote/host
lcd /directory/in/local/machine
mget *
bye
END_SCRIPT

SFTP스크립트에서 비슷한 것을 시도했는데 대화형 모드에서는 작동하지만 FTP할 수 없는 것처럼 SFTP원격 시스템에서 특정 파일을 가져오는 코드는 다음과 같습니다.

#!/bin/bash -vx

path="/tmp/testanks"

sftp [email protected] <<EOT
cd $path
get Bharti*
quit
EOT

스크립트에 사용자 이름과 비밀번호를 제공하여 비대화형으로 만들 수 있도록 위의 코드를 어떻게 변경합니까?

하드코딩된 비밀번호를 제공하는 것이 보안 문제라는 것을 알고 있지만 지금은 파일을 즉시 가져오는 것이 더 걱정됩니다. 안전한 방법과 제가 원하는 답변을 얻으실 수 있다면 정말 감사하겠습니다.

답변1

그리고곱슬:

curl sftp://example.com/file.zip -u user:password 

이에 유의하시기 바랍니다공개키 인증선호하는 비밀번호:

curl sftp://example.com/file.zip -u user

~/.ssh/id_rsa개인 키로 사용하려고 시도합니다 . 를 사용하여 다른 항목을 지정할 수 있습니다 --key.

답변2

해결 방법은 을 사용하고 scp원격 Authorized_keys 파일 끝에 로컬 공개 키를 추가하는 것입니다.

그 다음에

 scp [email protected]:Bharthi/* $path

localhost에서 .ssh디렉터리를 살펴보고 .pub가 없으면 먼저 다음을 수행합니다(한 번만).

ssh-keygen (1)
scp-copy-id [email protected] (2)
  1. 모든 기본값을 수락하고 메시지가 표시되면 비밀번호를 입력하지 마세요.
  2. 사용자 이름@100.XXX의 비밀번호를 입력하세요.

관련 정보