我能够将scp
Linux (alpine:3) docker 容器中的目录复制到我的 Windows 10 机器 (VM)。问题是复制成功完成后,它会打印此错误:
sshpass -p $MY_PASSWORD scp -o StrictHostKeyChecking=no -r -q /tmp/work [email protected]:/C:/Users/cdebergh.DOMAIN/source/repos/work
Program 'scp.exe' failed to run: Win32 internal error "Access is denied" 0x5 occurred while reading the console output
buffer. Contact Microsoft Customer Support Services.At line:1 char:1
+ scp.exe -r -t /C:/Users/cdebergh.DOMAIN/source/repos/work
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
At line:1 char:1
+ scp.exe -r -t /C:/Users/cdebergh.DOMAIN/source/repos/work
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedException
+ FullyQualifiedErrorId : NativeCommandFailed
然后退出容器,退出代码为 1。我在使用远程ssh
命令时遇到了这个问题,并通过用参数强制使用伪 tty 解决了这个问题-tt
。但是,据我从文档中了解到,这种情况并不存在scp
。我该如何实现这一点,或者至少抑制错误,以便容器成功完成?
笔记:我使用sshpass
而不是主机密钥,因为我的密码安全地存储在我的 macOS 钥匙串中。然后sshpass
在执行期间,我将它作为环境变量传递给临时容器。执行完成后,容器将与密码一起自毁。我宁愿没有敏感文件需要管理(主机私钥),以便在执行期间将其包含在内并保持临时性。