簡體   English   中英

Windows 上 rsync 的 SSH

[英]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目錄沒有被找到。

這是我的設置。

  • 我正在從 Git Bash 調用我的腳本,據我所知,我系統上的 SSH 是 Git 安裝的那個。 直接從命令行運行ssh按預期工作。
  • 我使用 Chocolatey 來安裝rsync
  • 我的構建腳本使用 Python 編寫並在 Python 3.7 上運行。

任何想法可能會發生什么?

我在Chocolatey 的rsync頁面上發表的評論中找到了答案。 問題是chocorsync莫名其妙地附帶了捆綁的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM