繁体   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