我需要通過SSH做rsync,並希望自動執行,而無需手動爲ssh傳遞密碼。如何通過rsync SSH密碼命令
回答
對於腳本化的ssh登錄,您應該使用不帶密碼的密鑰文件。這顯然是一種安全風險,請注意密鑰文件本身已得到充分保護。
使用SSH密鑰:
看看SSH-凱基和的ssh-copy-id命令。
在此之後,你可以使用rsync的是這樣的:
rsync -a --stats --progress --delete /home/path server:path
如果我用ssh寫密鑰,我寫:ssh u @ serv -i ./rsa 但是如何在rsync中做到這一點? – liysd 2010-07-21 14:15:57
如果將密鑰放入.ssh目錄併爲其指定一個標準名稱(通常爲id_rsa/id_rsa.pub),它將由rsync自動提取。 – 2010-07-21 14:31:14
雖然你已經通過,現在實現了,
,你也可以使用任何expect執行(你會發現在Perl的替代品,Python:pexpect,paramiko等)。
通過將環境變量RSYNC_PASSWORD設置爲要使用的密碼或使用--password-file選項,可以避免rsync命令的密碼提示。
只適用於目標服務器運行rsync守護進程 – 2013-03-02 16:58:15
即使這個答案沒有幫助,除非使用rsync守護進程,Google在這裏登陸並且它正是我所需要的。對我而言,我需要直接rsync到rsyncd,不需要ssh。我只是使用密碼文件選項,並完美地爲腳本工作。 – gregthegeek 2014-07-22 19:40:08
使用 「sshpass」 非交互式SSH密碼提供實用
在Ubuntu
sudo apt-get install sshpass
命令進行rsync
/usr/bin/rsync -ratlz --rsh="/usr/bin/sshpass -p password ssh -o StrictHostKeyChecking=no -l username" src_path dest_path
我知道這不是最好的做法,但我有一個殘缺不全的SSHD NAS,不會執行基於密鑰的身份驗證。這個答案是我的自動備份難題中缺少的一部分。所以+1爲最後的解決方案答案 – 2013-11-17 23:02:43
不知道sshpass,在棘手的情況下派上用場。 – haridsv 2014-11-14 11:14:46
如果您不能使用密鑰文件,但不想在命令中包含密碼,則可以將其寫入臨時文件並將其包含在內:'sshpass -p \'cat .password \'ssh [.. ]'。然後用'chmod 400 .password'保護你的'.password'文件,以確保只有你的用戶可以讀取它。 – lutuh 2015-08-06 14:20:50
另一個有趣的可能性:1。 產生RSA,DSA或密鑰對(如前所述) 2.將公鑰發送給主機(如前所述) 3.運行:
rsync --partial --progress --rsh="ssh -i dsa_private_file" [email protected]:/home/me/d .
注:-i dsa_private_file這是您的RSA/DSA私鑰
基本上,這種做法是非常類似於@Mad科學家所描述的,但是你做不必將您的私鑰複製到〜/ .ssh。換句話說,它是有用的即席任務(一次性密碼訪問)
如果您不能使用公鑰/私鑰,您可以使用期望:
#!/usr/bin/expect
spawn rsync SRC DEST
expect "password:"
send "PASS\n"
expect eof
if [catch wait] {
puts "rsync failed"
exit 1
}
exit 0
您需要將SRC和DEST替換爲正常的rsync源和目標參數,並將密碼替換爲PASS。只要確保這個文件安全存儲!
這些命令不能在我的'紅帽企業Linux服務器版本5.11(Tikanga)' – 2015-06-18 09:00:16
自動輸入rsync命令的密碼很困難。避免這個問題的簡單解決方案是安裝要備份的文件夾。然後使用本地rsync命令備份安裝的文件夾。
mount -t cifs //server/source/ /mnt/source-tmp -o username=Username,password=password
rsync -a /mnt/source-tmp /media/destination/
umount /mnt/source-tmp
繼作者:Andrew希福德的想法,這是使用sshfs的完成:
echo "SuperHardToGuessPass:P" | sshfs -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected]:/mypath/ /mnt/source-tmp/ -o workaround=rename -o password_stdin
rsync -a /mnt/source-tmp/ /media/destination/
umount /mnt/source-tmp
我用一個VBScript文件在Windows平臺上這樣做,服務器我非常好。
set shell = CreateObject("WScript.Shell")
shell.run"rsync -a [email protected]:/Users/Name/Projects/test ."
WScript.Sleep 100
shell.SendKeys"Your_Password"
shell.SendKeys "{ENTER}"
我
SSHPASS='myPassword'
/usr/bin/rsync -a -r -p -o -g --progress --modify-window=1 --exclude /folderOne -s -u --rsh="/usr/bin/sshpass -p $SSHPASS ssh -o StrictHostKeyChecking=no -l root" source-path myDomain:dest-path >&2
以下作品我必須安裝sshpass
上提供-a已經暗示-rlptgoD,並且通常,在這裏縮小命令行會更有幫助。 – Christian 2017-12-12 22:21:55
- 1. Python-rsync over ssh [如何輸入密碼]
- 2. 如何通過sudo運行命令並通過ssh .net輸入密碼c#
- 3. 通過rsh命令密碼?
- 4. 通過ssh發送命令與發佈SSH密鑰,沒有密碼
- 5. 使用密碼的螞蟻腳本通過SSH進行的Rsync
- 6. 如何使用ssh命令在命令中發送密碼
- 7. 如何通過PHP執行SSH命令
- 8. 如何通過robotframework執行ssh命令
- 9. rsync的通過ssh隧道
- 10. 如何使用Jsch通過SSH運行需要密碼的命令
- 11. 通過Windows命令提示符通過密碼驗證執行ssh
- 12. 如何通過系統停止rsync進程(「ssh host rsync ...」)?
- 13. 如何在linux ssh命令中傳遞* encrypted *密碼?有沒有辦法通過加密密碼?
- 14. rsync命令失敗時,通過系統()
- 15. svn + ssh沒有密碼從命令行?
- 16. 如何通過ssh/su - 通過本身傳遞密碼?
- 17. 如何獲得通過ssh運行的命令的返回碼而不是ssh命令?
- 18. 如何通過命令行傳遞jarsigner.exe密碼?
- 19. 運行sudo命令通過ssh
- 20. 使用JSch通過SSH運行命令
- 21. 通過PHP鏈接SSH命令
- 22. Jsch - 通過ssh發送命令
- 23. 發送命令通過ssh與參數
- 24. 通過ssh的vagrant provision命令
- 25. 通過ssh運行多個命令
- 26. 通過ssh遠程運行命令
- 27. 通過SSH執行大量命令
- 28. 無法通過ssh執行mpiexec命令
- 29. 不同的輸出命令通過ssh
- 30. 通過ssh運行mysql命令
有沒有可能性把密碼用命令的文本? – liysd 2010-07-21 13:55:22
不容易,在ssh中沒有選項它 – 2010-07-21 13:59:03
應該指出,這並不總是可以做到的(例如許多android ssh服務器的實現是非常有限的)。 – Ponkadoodle 2015-08-28 04:05:17