今天我在通过 ssh 连接到另外一台 mac 电脑上,然后使用 docker login 的时候,出现了下面的错误:

1
Error saving credentials: error storing credentials - err: exit status 1, out: `User interaction is not allowed. (-25308)`

  我在 mac 上使用的 docker, 是 orbstack 自带的,docker login 的时候会将用户名密码保存到钥匙串中。通过 ssh 登录,是无法直接访问钥匙串的,所以就出现了上面的错误。

1
2
$ ls -al /usr/local/bin/docker
lrwxr-xr-x  1 root  wheel  53  7 23 10:33 /usr/local/bin/docker -> /Applications/OrbStack.app/Contents/MacOS/xbin/docker

  一个简单的办法,是通过下面的命令,临时解锁钥匙串。然后再次执行 docker login 命令,就能成功登录。

1
$ security unlock-keychain

  但是,这个方法只能在单个 ssh seesion 内生效,如果在 ssh 连接断开后,再次登录,就又会出现上面的错误。我的 ssh client 配置了会话保持和复用,这个会话上的每个 shell 都能正常使用 docker login 命令。   但是,对于没有配置会话保持和复用的 ssh client,这个方法就不能用了。从网上查找资料说,可以考虑修改 ~/.ssh/config 文件,将 credsStore 字段的的值设置为空。这个方法我没有试过,先记录下来备用。