쉘 스크립트를 사용하여 다른 서버에서 파일을 추출하고 싶습니다. 이 작업을 수행할 수 있는 스크립트를 작성했지만 스크립트가 비대화형으로 작동하여 비밀번호를 묻는 메시지가 표시되지 않고 동일한 내용을 하드코딩하고 스크립트에 필수 콘텐츠가 있으면 자동으로 작동하도록 하고 싶습니다. .
이전에 이 작업을 수행한 적이 있지만 FTP
새 서버에서는 연결이 차단되어 or FTP
만 사용할 수 있습니다 . 이전 스크립트는 다음과 같았는데, 비밀번호 없이도 잘 사용 하고 작업을 수행했습니다.SCP
SFTP
FTP
#!/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
답변2
해결 방법은 을 사용하고 scp
원격 Authorized_keys 파일 끝에 로컬 공개 키를 추가하는 것입니다.
그 다음에
scp [email protected]:Bharthi/* $path
localhost에서 .ssh
디렉터리를 살펴보고 .pub가 없으면 먼저 다음을 수행합니다(한 번만).
ssh-keygen (1)
scp-copy-id [email protected] (2)
- 모든 기본값을 수락하고 메시지가 표시되면 비밀번호를 입력하지 마세요.
- 사용자 이름@100.XXX의 비밀번호를 입력하세요.