无法登录到Docker帐户

s3fp2yjn  于 2022-09-19  发布在  Docker
关注(0)|答案(18)|浏览(249)
OS: Ubuntu 18.04 Server
Docker 18.3 CE

我使用PuTTY SSH会话从我的Windows 10笔记本电脑登录到服务器。

我在本地的Windows笔记本电脑上没有安装Docker,所以所有工作都在远程服务器上完成。

我可以使用终端会话在远程服务器上执行所有Docker命令。

但是,当我尝试将图像保存到Docker集线器时,当我尝试登录时,使用:

docker login

我收到以下错误消息:

error getting credentials - err: exit status 1, out: `GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.secrets was not provided by any .service files`

当我在远程服务器上创建映像时,没有收到任何错误消息。

我也没有在远程服务器上的相关主目录中看到.docker文件夹。有什么主意吗?

qvtsj1bj

qvtsj1bj1#

编辑2019-04-07:

由于这是目前选择的答案,我认为人们应该先尝试下面的@Anish Varghese解决方案,因为它似乎是最简单的。您只需要安装gnupg2和PASS包:
Sudo apt安装gnupg2通行证

如果不起作用,那么你可以在这里尝试我的原始解决方案:

我也有同样的问题。Bak2trak Answer起作用了,但它以明文形式保存凭据。如果您想要将它们保存在密码存储中,以下是解决方案。

1)从https://github.com/docker/docker-credential-helpers/releases下载Docker-Credential-Pass

2)tar -xvf docker-credential-pass.tar.gz

3)chmod u+x docker-credential-pass

4)mv docker-credential-pass /usr/bin

5)您将需要设置Docker-Credential-Pass(以下步骤基于https://github.com/docker/docker-credential-helpers/issues/102#issuecomment-388634452)

5.1)安装gpg并通过(apt-get install gpg pass)

5.2)gpg --generate-key,输入您的信息。您应该会看到类似这样的内容:

pub   rsa3072 2018-10-07 [SC] [expires: 2020-10-06]
      1234567890ABCDEF1234567890ABCDEF12345678

复制123...线

5.3)pass init 1234567890ABCDEF1234567890ABCDEF12345678(粘贴)

5.4)pass insert docker-credential-helpers/docker-pass-initialized-check,并设置下一个密码“PASS IS INITIALIZED”(无引号)。

5.5)pass show docker-credential-helpers/docker-pass-initialized-check。您应该看到PASS已初始化。

5.6)docker-credential-pass list

6)使用以下命令创建~/.docker/config.json:

{
"credsStore": "pass"
}

7)扩展坞登录现在应该可以工作了

注意:如果在以后的运行中出现错误“PASS STORE IS UNINITIZIZED”,请运行以下命令(它将在内存中重新加载PASS存储):

pass show docker-credential-helpers/docker-pass-initialized-check

它将询问您的密码,并初始化通行证存储。

这是基于以下讨论:https://github.com/moby/moby/issues/25169#issuecomment-431129898

shstlldc

shstlldc2#

在ubuntu中安装以下程序包解决了我的问题

sudo apt install gnupg2 pass
3j86kqsm

3j86kqsm3#

我在ubuntu 18.08中遇到了同样的问题,这对我来说终于奏效了。作为一种临时解决方案。

我创建了这个文件夹home/.docker/,因为一些解决方案建议我创建一个文件config.json,并在其中写入默认凭据,即

{
    "credsStore": "pass"
}
  • 我删除了此文件config.json
  • 然后将docker-redential-iciservice重命名为其他名称,这样它就不会拾取此文件。

Sudo mv/usr/bin/docker-redential-iciservice/usr/bin/docker-redential-askservice_x

而且成功了!

gt0wga4j

gt0wga4j4#

这也可能有帮助,至少在Ubuntu 20.04中是这样:

wget https://github.com/docker/docker-credential-helpers/releases/download/v0.6.3/docker-credential-secretservice-v0.6.3-amd64.tar.gz && tar -xf docker-credential-secretservice-v0.6.3-amd64.tar.gz && chmod +x docker-credential-secretservice && mv docker-credential-secretservice /usr/local/bin/

https://hackernoon.com/getting-rid-of-docker-plain-text-credentials-88309e07640dhttps://github.com/docker/docker-credential-helpers/releases

6tdlim6h

6tdlim6h5#

如果apt安装gnupg2通行证不适用于您,您还可以安装Golang-docker-redential-helpers包

jbose2ul

jbose2ul6#

我刚刚删除了~/.docker/config.json,并再次尝试登录。它起作用了。将创建一个新文件。

jgwigjjp

jgwigjjp7#

这在我的Ubuntu 18中很管用:

docker logout
mv ~/.docker/config.json ~/.docker/config_old.json
docker login
vptzau2j

vptzau2j8#

对我来说,最简单的解决方案是在用户主目录内的.docker目录下创建config.json文件:

/home/.docker/config.json

然后,我从服务器上复制了该文件的内容,我可以从该服务器登录到扩展底座中心。

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "SOMEVALUE"
                }
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/18.06.1-ce (linux)"
        }

}

这是一个简单的解决办法,因为它不需要您安装或更新任何包,而我们在生产服务器上无法轻松做到这一点。

sg2wtvxw

sg2wtvxw9#

简单的解决方案:只需从~/.docker/config.json中删除"credsStore": "secretservice"

vu8f3i0k

vu8f3i0k10#

用sudo运行脚本就解决了我的问题!

sudo docker login -u YOU-USERNAME
lskq00tm

lskq00tm11#

对于我来说,docker push失败,原因是

denied: requested access to the resource is denied

..。因此,我想要docker login,但在输入凭据后得到以下结果:

Remote error from secret service:
  org.freedesktop.DBus.Error.UnknownMethod:
  No such interface 'org.freedesktop.Secret.Collection' on object at path
  /org/freedesktop/secrets/collection/login

Error saving credentials:
  error storing credentials - err: exit status 1, out:
  No such interface 'org.freedesktop.Secret.Collection' on object at path
  /org/freedesktop/secrets/collection/login

幸运的是,我有另一台机器可用,我可以在不对系统进行任何更改的情况下登录。我复制了~/.docker/config.json的内容...

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "<some-hash-value>"
                }
        },
        "HttpHeaders": {
                "User-Agent": "Docker-Client/18.09.2 (linux)"
        }
}

..。到另一台机器,docker push起作用了。

r1zhe5dt

r1zhe5dt12#

我遇到了这个问题(无头Ubuntu 20,从16,18升级而来),其他答案对我都不起作用。最后,在阅读了这里发布的一些讨论后,我发现问题是gnome-keyring已安装,但无法正常工作。由于这是无头的,正确的答案是删除GNOME-KEYRING(因为它提供org.freedesktop.secrets服务),然后它就可以完美地工作了。

sudo apt remove gnome-keyring golang-docker-credential-helpers
zsohkypk

zsohkypk13#

你已经阅读了解决方案,但事实是Ubuntu 18+中现在没有默认安装gnupg2,这就是为什么在apt upgrade之后的某个时候,事情的表现有点不同。

cnh2zyt3

cnh2zyt314#

试试看:sudo apt install golang-docker-credential-helpers

zzoitvuj

zzoitvuj15#

根据答案,我有几个问题。

1.密钥生成停留在熵(步骤5.2)。

幸运的是,修复很简单,您只需要安装包rng-toolshttps://stackoverflow.com/a/32941065

1.在pass init <key>上(步骤5.3)出现错误gpg: decryption failed: No secret key

事实上,该问题是由于密钥被限制为根权限造成的。

我更改了用户home目录中.gnupg .password-store文件夹的所有权。

然后重新加载了dimngr以避免“不安全的所有权”警告:

gpgconf --kill dirmngr

如果您不想执行所有这些操作,则可以以超级用户/sudo身份运行答案的所有命令。

相关问题