【问题标题】:SSH from rsync on WindowsWindows 上 rsync 的 SSH
【发布时间】:2019-02-03 23:52:55
【问题描述】:

我的构建脚本通过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 上运行。

有什么想法吗?

【问题讨论】:

  • 如果您无法从命令行重现问题,那么您需要查看从脚本调用时 $HOME 的设置。
  • @jww:这个问题和部署直接相关,是编程的一部分。

标签: windows ssh rsync


【解决方案1】:

我在Chocolatey's rsync page 上发布的评论中找到了答案。问题是chocorsync 莫名其妙地附带了捆绑的 SSH,并且 ssh 已损坏。当然,将 SSH 与 rsync 包括在内没有任何意义,因为它们是两个完全独立的程序。我尝试重命名捆绑的 SSH,但没有奏效。但是,下面的评论确实如此:

用户Adam wrote

某种损坏的 SSH!

rsync 附带的 ssh 实际上不起作用,因为它在错误的位置查找用户主目录。您可以通过创建包含db_home: /%HC:\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 没有这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-10
    • 2010-10-15
    • 2019-01-16
    • 2014-06-19
    • 2012-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多