在Windows上从rsync进行SSH

时间:2019-02-03 23:52:55

标签: windows ssh rsync

我的构建脚本通过rsync使用ssh上传到生产环境。通常,我是从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。自然,它无法执行此操作,因为Windows计算机上不存在/home$HOME返回/c/Users/Scott,因此,即使它正在寻找UNIX风格的变量,也不应感到困惑。另外,它要求输入密码而不使用我的密钥的事实表明找不到我的.ssh目录。

这是我的设置。

  • 我正在从Git Bash调用脚本,据我所知,我系统上的SSH是Git安装的SSH。直接从命令行运行ssh可以正常工作。
  • 我用Chocolatey安装了rsync
  • 我的构建脚本是使用Python并在Python 3.7上运行的。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

用户Adam wrote

  

种类繁多的SSH!

     

rsync随附的ssh实际上无法正常工作,因为它会在错误的位置查找用户主目录。您可以通过创建包含rsync的{​​{1}}来解决此问题。可以由安装程序来创建它。但是,当您使用PubkeyAuthentication或每个用户的ssh配置时,它会抱怨权限太开放,可以通过运行来解决

C:\ProgramData\chocolatey\lib\rsync\cwRsync_5.5.0_x86_Free\etc\nsswitch.conf
     

db_home: /%H软件包中的ssh没有此问题。