[英]SSH from rsync on Windows
我的構建腳本通過ssh
使用rsync
上傳到生產環境。 通常,我從 Linux 機器部署,但我也希望能夠從 Windows 部署,以便我需要快速更改並且只能訪問我的 Windows 機器。 但是,我遇到了麻煩。 這是詳細輸出的相關部分。 第一行由我的構建腳本打印,其余由 rsync 或它調用的程序打印(即,我不直接調用 SSH)。
Executing the rsync command: ['rsync', '--verbose', '-avzihhhc', '--exclude=/.well-known', '--exclude', 'deploy.sh', '--delete', '..\\scottseverance.mss\\_site\\', 'myuser@myhost:/home/public']
opening connection using: ssh -l myuser myhost rsync --server -vvnlogDtprcze.iLsfxC "--log-
format=%i" --delete . /home/public (11 args)
Could not create directory '/home/Scott/.ssh'.
The authenticity of host 'myhost (host's ip address)' can't be established.
ECDSA key fingerprint is SHA256:a+Ny0PLkKhm80+5kqzqfVXIlbkQpn/CpMMrzurd8sDI.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts (/home/Scott/.ssh/known_hosts).
myuser@myhost's password:
我認為關鍵是它要搜索的目錄。 請注意,它無法創建/home/Scott/.ssh
。 自然,它不能這樣做,因為/home
在 Windows 機器上不存在。 $HOME
返回/c/Users/Scott
,因此即使它正在尋找 UNIX 樣式的變量,也不應該混淆。 此外,它要求輸入密碼而不是使用我的密鑰這一事實表明我的.ssh
目錄沒有被找到。
這是我的設置。
ssh
按預期工作。rsync
。任何想法可能會發生什么?
我在Chocolatey 的rsync
頁面上發表的評論中找到了答案。 問題是choco
的rsync
莫名其妙地附帶了捆綁的 SSH,而 ssh 已損壞。 當然,將 SSH 包含在 rsync 中沒有任何意義,因為它們是兩個完全獨立的程序。 我嘗試重命名捆綁的 SSH,但這沒有用。 然而,下面的評論確實如此:
用戶亞當寫道:
有點壞的 SSH!
rsync 附帶的 ssh 實際上不起作用,因為它在錯誤的位置查找用戶主目錄。 您可以通過創建包含
db_home: /%H
C:\\ProgramData\\chocolatey\\lib\\rsync\\cwRsync_5.5.0_x86_Free\\etc\\nsswitch.conf
來解決此問題。 讓安裝程序創建它會很好。 但是當您使用 PubkeyAuthentication 或每個用戶的 ssh 配置時,它會抱怨過於開放的權限,這可以通過運行來修復set key=".ssh\\id_rsa" icacls %key% /c /t /inheritance:d icacls %key% /c /t /grant %username%:F icacls %key% /c /t /remove Administrator BUILTIN\\Administrators BUILTIN Everyone System Users icacls %key%
openssh
包中的 ssh 沒有這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.