我对docker构建有问题 命令,该命令在尝试从私有git克隆存储库时中断。错误消息显示我没有权限:
#17 4.712围棋:github。com/专用/project@v1.0.0:正在读取github。com/private/project/go。mod在v1.0.0版本中:git ls remote-q origin
/go/pkg/mod/cache/vcs中/
我有所有我认为重要的观点
# syntax=docker/dockerfile:experimental
FROM golang:alpine AS build-env
RUN apk add build-base git openssh-client
RUN mkdir -p -m 700 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
RUN --mount=type=ssh git clone git@github.com:myorg/myproject.git myproject
...
然后我用一个命令运行构建,该命令包括ssh
export DOCKER_BUILDKIT=1
docker build --rm=false --no-cache --ssh default --file ./Dockerfile \
--build-arg GO_VERSION=1.16.3 --tag app:main .
git克隆
失败,出现上述错误。
另外
--rm=false
也没有效果,因为导出DOCKER_BUILDKIT=1
。所以我不知道如何调试这个。我看不到任何容器,一旦docker
命令返回,它们就会被销毁...
我尝试更改
--ssh
,以防万一:
# The following gives me a permission error (as I expected)
... --ssh default=/home/alexis/.ssh/id_rsa ...
# The following is, I think, what happens by default, same git error
# (I verified the socket is under /run/user/1000/keyring/ssh
# as defined in the variable)
... --ssh github=$SSH_AUTH_SOCK ...
同样在文件中,
mkdir
是600
。700
或600
相同的区别。
所以我的问题是:我如何调试SSH问题,知道容器消失了,安装程序根本不想工作?
我在许多答案和文档中找到了很多信息,但它仍然不起作用,而且在失败时如何真正调试这样的设置也没有多少内容。
在docker容器中使用SSH密钥
是否可以在运行的容器中启动shell会话(没有ssh)
- 使用远程代理转发时docker buildkit装载ssh
- 使用Docker Compose将主机的SSH密钥注入Docker机器
- 使用SSH访问内部版本中的私有数据
- docker构建
$ docker version
Client:
Version: 20.10.8
API version: 1.41
Go version: go1.16.6
Git commit: 3967b7d28e
Built: Wed Aug 4 21:24:10 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server:
Engine:
Version: 20.10.8
API version: 1.41 (minimum version 1.12)
Go version: go1.16.6
Git commit: 75249d8
Built: Wed Aug 4 21:26:30 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.4.9
GitCommit: e25210fe30a0a703442421b0f60afac609f950a3
runc:
Version: 1.0.1
GitCommit:
docker-init:
Version: 0.19.0
GitCommit: de40ad0
好的,我终于找到了一个可以显著帮助你的选择。默认的docker输出是整洁的,但它只提供一行彩色信息,除非发生错误(错误在最后打印),否则不会提供RUN命令中发生的任何细节。
为了进行调试,您至少可以使用以下命令获得每个命令的输出:
docker build --progress=plain ...
整洁的输出将替换为一整套行,包括错误和标准输出。现在我可以添加以下内容:
RUN echo "Hello"
或测试,例如:
RUN ssh -A -l git -v github.com
并获得完整输出。
中间图像
作为附带说明,我发现的一件事是--ssh默认
需要访问您的ssh-agent套接字,并且默认情况下这受设备保护。我必须编辑设备文件并添加以下内容:
/run/user/1000/keyring/ssh rw,
警告1:每当docker更新时,此行可能会消失。
警告2:您希望运行以下命令,以便更改立即生效(或重新启动):
sudo apparmor_parser -r /var/lib/snapd/apparmor/profiles/snap.docker.docker
我还对/run/user/1000和
/run/user/keyring文件夹进行了chmod。一旦我让事情真正起作用,我会尽量不让那些chmod改变。。。但我并没有抱着希望。
好的,我有事情要做!
下一个问题是密钥的名称必须是id\u rsa。这是因为docker创建了一个根用户,而该用户只有默认的键名。您可以创建一个
。使用不同名称的ssh/config文件。但是,如果您与其他不使用没有此类名称的密钥的人一起工作,那么这可能会有问题。
有关
Dockerfile
和其他设置的更多详细信息,请参阅在Docker中使用私有gitlab模块构建Go应用程序
问题内容: 我正在写一种加密会话密钥的方法。它需要这样做,以便可以通过已成功测试的其他程序解密密钥。解密程序无法更改。我受困的是使我的加密工作与解密例程保持一致。 首先让我给出解密例程。请记住,这不能改变: 这是我正在编写的加密例程。我生成base64编码的文本,但最终无法解密。值得注意的是,我已验证解密例程正确获取了加密例程的结果(两者之间没有握手问题)。 我真的被卡住了。任何帮助表示赞赏。谢谢
我有一个PGP公钥加密的会话包,我想从中提取会话密钥,这样我就可以单独解密会话密钥。我正在使用BouncyCastle库,并像这样提取会话密钥: 其中session_key_enc.bin是二进制格式的加密会话密钥,private.pem是与我在GPG中用于加密数据的公钥相对应的私钥。在加密数据之前,我将RSA密钥对的公钥部分转换为PGP格式的密钥,并将其导入GPG。 当我运行OpenSSL命令时
我创建了两个GitHub帐户。一个给我的工作用户,一个给我自己。我需要赶上一些工作,因此将我的工作存储库克隆到我的个人电脑上。为了在不输入我的用户名和密码的情况下完成简单的“git推源主”提交,我只是想将我家用电脑上的公钥添加到工作存储库中。但是Github给出了这个错误: 谷歌了一会儿后,我看到了这个链接,上面写着“要解决问题,请从另一个帐户或存储库中删除密钥并将其添加到您的帐户”。当然,还有一
问题内容: 如何列出和导出密钥库中的私钥? 问题答案: 最初来自Example Depot的一部分代码,用于列出密钥存储区中的所有别名: 几个月前,在Sun论坛上讨论了私钥的导出问题,而u:turingcompleter提出了DumpPrivateKey类,以将其缝入您的应用程序。 注意:这使用Sun软件包,这是一件“坏事”。 如果您可以下载apache commons代码 ,则以下是无需警告即可
因为我是加密概念的新手。我想做的是一个应用程序,它发送的数据是用AES对称技术加密的。另外,我还需要将我以前使用非对称RSA技术加密的密钥以加密格式发送到另一边。我已经完成了使用AES对称加密技术使用256位密钥的加密,现在我已经加密数据,密钥,和启动矢量(IV)在字节。当我试图解密时,我知道起始向量也需要得到准确的数据。 现在我的问题是 C#中的AES解密代码: 我在C#中的非对称代码
更新:正如当前答案所建议的,我还给出了的输出: