【发布时间】: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:这个问题和部署直接相关,是编程的一部分。