원격 클러스터의 여러 디렉터리에서 여러 영화를 다운로드하는 bash 스크립트를 작성했습니다. 내 문제는 bash 파일이 원격 클러스터의 "모든" 영화를 다운로드하기 위해 비밀번호를 요구한다는 것입니다.
비밀번호를 한 번만 입력하면 모든 영화를 다운로드 받을 수 있는 방법이 있는지 알고 싶습니다. 누구든지 도움을 주시면 정말 감사하겠습니다. 내 bash 스크립트는 다음과 같습니다
##! /bin/bash
direc1='foldername1 foldernameg foldername7 foldernames'
for AR in $direc1 ;do
movname="$AR".avi
for ART in $movname ;do
DatFile1="$AR"
DatFile2="$ART"
echo "#######################--NEW--####--DOWNLOAD--###############################"
scp -p -r cluster/directory/$DatFile1/$DatFile2 /home/folder3
done
done
출력은 다음과 같습니다:
#######################--NEW--####--DOWNLOAD--###############################
your password:
foldername1.avi 100% 7580KB 1.5MB/s 00:04
#######################--NEW--####--DOWNLOAD--###############################
your password:
foldernameg.avi 100% 7580KB 1.1MB/s 00:02
#######################--NEW--####--DOWNLOAD--###############################
your password:
foldername7.avi 100% 7580KB 1.7MB/s 00:05
#######################--NEW--####--DOWNLOAD--###############################
your password:
foldernames.avi 100% 7580KB 1.9MB/s 00:07
위 출력에서 "비밀번호:"라는 메시지가 나타나면 각 영화를 다운로드하려면 비밀번호를 입력해야 합니다.
답변1
scp
따라서 ssh
구성에서 SSH 공개 키 로그인을 활성화하고 sshd
공개 ssh
키에 비밀번호가 없으며 공개 키가 인증된 키에 추가되어 있으면 scp
비밀번호 없이 사용할 수 있습니다.
- 클라이언트(scp 스크립트를 실행하는 곳)에서 SSH 키를 생성합니다. 비밀번호 없이 로그인하려면 비밀번호를 공백으로 남겨두세요.
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/stew/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/stew/.ssh/id_rsa
Your public key has been saved in /home/stew/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:CB8ztwpXrT7lWQj/3W+8IAoHwqTelEBva9/aA7u2w3w stew@stewbian
The key's randomart image is:
+---[RSA 3072]----+
| . |
| . . . |
| ..++ + . |
| *ooB = . |
| ..B+.S + . |
| . +oo+oo + . . |
| . .+o=oo......|
| *=E. . . +|
| .+=o. oo|
+----[SHA256]-----+
$
- SSH 서버(원격 시스템)가 공개 키를 수락하는지 확인하세요.
$ cat /etc/ssh/sshd_config | grep PubkeyAuthentication
#PubkeyAuthentication yes
표시된 경우 PubkeyAuthentication no
파일을 변경하고 systemctl restart sshd
.
- 공개 키를
~/.ssh/authorized_keys
원격 서버에 추가하십시오. 이 작업은ssh-copy-id <user>@<server>
1단계에서 만든 콘텐츠를~/.ssh/id_rsa.pub
로컬 컴퓨터에서~/.ssh/authorized_keys
서버에 수동으로 첨부하여 수행할 수 있습니다.
답변2
키 기반 인증이 최선의 접근 방식입니다. 원격 끝이 구성되지 않은 경우 문제는 무엇입니까?예상되는사용:
#!/usr/bin/env expect
set timeout -1
# enter your password once
stty -echo
send_user -- "Enter your password for the cluster: "
expect_user -re "(.*)\n"
send_user "\n"
stty echo
set pass $expect_out(1,string)
set folders {
foldername1
foldernameg
foldername7
foldernames
}
foreach f $folders
spawn scp -p -r cluster/directory/$f/$f.avi /home/folder3
expect {
"your password:" { send "$pass\r"; exp_continue }
eof
}
}