我想从我的容器运行git命令到主机。我正在更新的git文件夹在主机上,我无法在我的容器中克隆它。我也希望把文件放在我的主机上,这样用户上传文件就不会有困难。
- 主机
- DockerContainer 1
我尝试过的事情:
ssh -i /var/sshkeys Username@vmMaching.Domain.corp 'cd /var/www/scheduledqueries && git pull'
我在输入我的代码时得到一个错误:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0755 for '/var/sshkeys' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/var/sshkeys": bad permissions
Username@vmMaching.Domain.corp's password:
Permission denied, please try again.
Username@vmMaching.Domain.corp's password:
error: cannot open .git/FETCH_HEAD: Permission denied
root@200eea99abd9:/#
我将我的证书和密钥文件复制到一个位置,并将其列在我的docker-compose
的卷部分。第一部分是纯ssh:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0755 for '/var/sshkeys' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "/var/sshkeys": bad permissions
Git与此消息无关。您使用参数-i
、路径名、用户和主机以及在服务器上运行一次的命令运行ssh
。Ssh本身决定忽略您的-i
,以迫使您修复文件的权限。
然后输入密码,ssh在服务器上运行您要求它执行的命令。该命令-cd /var/www/scheduledqueries && git pull
-成功地执行了cd /var/www/scheduledqueries
。然后它运行git pull
,这意味着运行git fetch
,然后一旦工作,对刚刚获取的做一些事情(something部分取决于你如何配置Git)。
fetch
操作失败,因为在服务器上,您登录的用户没有权限读取和/或写入Git库中的.git/FETCH_HEAD
。
要解决第一部分中的抱怨,请确保您的客户端上的文件(您将运行ssh
)具有正确的权限,以便ssh
愿意使用它(并且它具有正确的内容,以便当ssh
确实使用它时,它可以工作),这可能已经是情况;我们只知道ssh
没有使用它)。
要修复第二部分中的抱怨,请确保无论您登录到服务器(Username@vmMaching.Domain.corp
)上的哪个用户都具有读写.git
目录中的文件的权限。一般来说,该用户应该拥有该目录的,尽管在某些情况下,您可以设置用户是可以使用该目录的组的成员。设置对Git存储库的组范围访问有点棘手。
(注意,如果你打算使用Docker来运行某个特定的服务,你可能希望完全在Docker之外设置服务。这样,您就不需要在服务器的中执行任何Git操作,因为这些操作早在docker命令启动之前就已经完成了。