SCP 비밀번호 자동 입력

SCP 비밀번호 자동 입력

cronjob에 scp가 표시되도록 할 것이므로 다른 서버에 대해서는 자동 입력 비밀번호를 사용하는 것이 좋습니다.

sshpass -p 'your_password' scp [email protected]:/usr/etc/Output/*.txt /usr/abc/

이 스크립트는 저에게 작동하지 않습니다. 저는 Solaris를 사용하고 있습니다.

답변에 대한 설명도 표시해 주십시오. 감사해요.

추가의

나는 사용했다

#!/usr/local/bin/expect -f

spawn bash -c "scp /apps/DASHBOARD/xx/xxx/xxxx/TEST1.*.txt dash@MYSERV:/apps/DASHBOARD/xx/xxx1/"
expect "*Password:*"
send "pass123\r"
interact

spawn bash -c "scp /apps/DASHBOARD/xx/xxx/xxxx/SAMP1.*.txt* dash@MYSERV:/apps/DASHBOARD/xx/samp1/"
expect "*Password:*"
send "pass123\r"
interact

CRONJOB에 넣었습니다. 이 스크립트를 수동으로 실행하면 작동하지만 CRONJOB에 이 스크립트를 설정하면 두 번째 scp에서는 계속되지 않습니다.

도와주세요.

답변1

하드 카피 비밀번호를 보관/유지하지 않으려면 공개 키 인증을 사용하여 연결하세요. 공개 키 인증 연결을 설정하기 위해 로컬 사용자 콘텐츠를 id_rsa.pub원격 사용자 파일에 복사합니다.~/.ssh/authorized_keys

여전히 비밀번호를 사용하고 싶다면 아래와 같이 예상 스크립트를 만들고 합계 userserver비밀번호 가 일치하도록 예상 스크립트의 두 번째 줄을 변경할 수 있습니다 MY_PASSWORD.

spawn scp "[email protected]:/usr/etc/Output/*.txt" /usr/abc/
expect "[email protected]\'s password:" 
send "MY_PASSWORD\r"
interact

게시해 주신 @pynexj에게 감사드립니다.StackOverFlow에 대한 링크다음과 같이 스크립트를 수정해야 했습니다.

#!/usr/bin/expect -f

spawn scp /TEST1.txt [email protected]:/root/
expect "*assword:*"
send "password\r"
expect eof

spawn scp /TEST2.txt [email protected]:/root/
expect "*assword:*"
send "password\r"
expect eof
exit

노트전송해야 할 파일이나 패턴이 여러 개인 경우 SFTP의 배치 모드 사용을 고려해 볼 수도 있습니다.

답변2

하드 드라이브에 대한 기밀성을 허용하는 경우 홈 .ssh 폴더에 있는 키를 사용하여 비밀번호 확인을 건너뛸 수 있습니다. 이는 비대화형, 기계 간 인증입니다.

답변3

이것을 시도하기 전에 scp에서 정규식 인용문을 사용해야 하므로 이것이 실패 지점이 될 가능성이 높습니다.

sshpass -p 'your_password' scp "[email protected]:/usr/etc/Output/*.txt" /usr/abc/

관련 정보