[linux] scp에 비밀번호를 전달하는 방법?
권장하지는 않지만 사용자 암호를 scp에 전달하는 것이 가능합니까?
배치 작업의 일부로 scp를 통해 파일을 복사하고 싶습니다. 수신 서버는 물론 암호가 필요합니다. 아니요. 키 기반 인증으로 쉽게 변경할 수는 없습니다.
답변
답변
sshpass를 사용하십시오 .
sshpass -p "password" scp -r user@example.com:/some/remote/path /some/local/path
암호가 bash 기록에 표시되지 않습니다.
sshpass -f "/path/to/passwordfile" scp -r user@example.com:/some/remote/path /some/local/path
위의 내용은 원격 호스트에서 로컬로의 경로 내용을 복사합니다.
설치 :
- 우분투 / 데비안
apt install sshpass
- 센 토스 / 페도라
yum install sshpass
- 맥 포트가있는 맥
port install sshpass
- 양조 한 맥
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
답변
다음과 같이 ssh 키를 생성하십시오.
ssh-keygen -t rsa -C "your_email@youremail.com"
내용을 복사하여 ~/.ssh/id_rsa.pub
마지막으로 원격 시스템에 추가~/.ssh/authorized_keys
원격 시스템에 권한이 있는지 확인 0700 for ~./ssh folder
하고0600 for ~/.ssh/authorized_keys
답변
Windows에서 서버에 연결하는 경우 Putty 버전의 scp ( “pscp”)를 사용하면 -pw
매개 변수 와 함께 비밀번호를 전달할 수 있습니다 .
답변
curl은 파일을 복사하기 위해 scp 대신 사용할 수 있으며 명령 행에서 비밀번호를 지원합니다.
curl --insecure --user username:password -T /path/to/sourcefile sftp://desthost/path/
답변
유닉스 / 터미널에서 ‘expect’스크립트를 사용할 수 있습니다
예를 들어 ‘test.exp’를 작성하십시오.
#!/usr/bin/expect
spawn scp /usr/bin/file.txt root@<ServerLocation>:/home
set pass "Your_Password"
expect {
password: {send "$pass\r"; exp_continue}
}
스크립트를 실행
expect test.exp
도움이 되길 바랍니다.
답변
다음은 expect
도구 를 사용 하여 수행하는 방법의 예입니다 .
sub copyover {
$scp=Expect->spawn("/usr/bin/scp ${srcpath}/$file $who:${destpath}
+/$file");
$scp->expect(30,"ssword: ") || die "Never got password prompt from
+ $dest:$!\n";
print $scp 'password' . "\n";
$scp->expect(30,"-re",'$\s') || die "Never got prompt from parent
+system:$!\n";
$scp->soft_close();
return;
}