[英]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.