linux in - 如何將密碼傳遞給scp?




7 Answers

你可以使用像expect這樣的工具編寫腳本(也有方便的綁定,比如Python的Pexpect )。

with password

我知道這不是推薦的,但它是否可以將用戶的密碼傳遞給scp?

我想通過scp複製文件作為批處理作業的一部分,接收服務器當然需要密碼,不,我不能輕易將其更改為基於密鑰的身份驗證。




只需生成一個ssh密鑰:

ssh-keygen -t rsa -C "[email protected]"

複製~/.ssh/id_rsa.pub的內容並最後將其添加到遠程機器~/.ssh/authorized_keys

確保遠程機器0700 for ~./ssh folder具有權限0700 for ~./ssh folder 0600 for ~/.ssh/authorized_keys具有權限0600 for ~/.ssh/authorized_keys




你可以在unix / terminal上使用'expect'腳本

例如,創建'test.exp':

#!/usr/bin/expect
        spawn scp  /usr/bin/file.txt [email protected]<ServerLocation>:/home
        set pass "Your_Password"
        expect {
        password: {send "$pass\r"; exp_continue}
                  }

運行腳本

expect test.exp 

我希望有所幫助。







另一種方法是將用戶密鑰的公共一半添加到目標系統上的授權密鑰文件中。 在啟動傳輸的系統上,您可以運行ssh-agent守護進程並將私鑰的一半添加到代理。 然後可以將批處理作業配置為使用代理獲取私鑰,而不是提示密鑰的密碼。

這應該可以在UNIX / Linux系統上或在使用pageant和pscp的Windows平台上執行。




curl可以用來替代scp來複製文件,並且它在命令行上支持密碼。

curl --insecure --user username:password -T /path/to/sourcefile sftp://desthost/path/






Related

linux batch-file scp