在 WSL(适用于 Linux 的 Windows 子系统)上运行 gnome-keyring

Wie*_*sma 9 git gnome-keyring windows-subsystem-for-linux

我一直在尝试使用本文中的步骤使用密钥环(Gnome 密钥环)存储 HTTPS GIT 凭据:

http://blog.iqandreas.com/git/storing-https-authentication-in-ubuntu-and-arch-linux/

我采取了以下步骤:

sudp apt-get install make
sudo apt-get install-gnome-keyring-dev
sudo make --directory=/usr/share/doc/git/contrib/credential/gnome-keyring
git config --global credential.helper /usr/share/doc/git/contrib/credential/gnome-keyring/git-credential-gnome-keyring
Run Code Online (Sandbox Code Playgroud)

现在,当我使用任何远程 git 命令时,出现错误:

** (process:19273): CRITICAL **: Error communicating with gnome-keyring-daemon
Run Code Online (Sandbox Code Playgroud)

是不可能在 WSL 上运行守护进程,还是我错过了一些简单的东西?抱歉,如果这是不同类型的问题,我是 Ubuntu 新手。

另一方面,为标签“ubuntu-on-windows”创建同义词“WSL”是个好主意吗?

我认为这可能成为 ubuntu-on-windows 最合乎逻辑的首字母缩写词:https : //blogs.msdn.microsoft.com/wsl/

更新:

我已经尝试过@LordMord 所说的:

在 ~/.bashrc 末尾添加

ssh-add -l &>/dev/null
if [ "$?" == 2 ]; then
  test -r ~/.gnome-keyring && \
    source ~/.gnome-keyring && \
    export DBUS_SESSION_BUS_ADDRESS GNOME_KEYRING_CONTROL SSH_AUTH_SOCK GPG_AGENT_INFO GNOME_KEYRING_PID

  ssh-add -l &>/dev/null
  if [ "$?" == 2 ]; then
    (umask 066; echo `dbus-launch --sh-syntax` > ~/.gnome-keyring; gnome-keyring-daemon >> ~/.gnome-keyring)
    source ~/.gnome-keyring && \
    export DBUS_SESSION_BUS_ADDRESS GNOME_KEYRING_CONTROL SSH_AUTH_SOCK GPG_AGENT_INFO GNOME_KEYRING_PID
  fi
fi
Run Code Online (Sandbox Code Playgroud)

它告诉我再安装 2 个依赖项:

sudo apt-get install dbus-x11
sudo apt-get install gnome-keyring
Run Code Online (Sandbox Code Playgroud)

但现在我在启动时收到此错误:

** (gnome-keyring-daemon:23): WARNING **: couldn't create socket directory: No such file or directory

** (gnome-keyring-daemon:23): WARNING **: couldn't bind to control socket: /home/wtijsma/.cache/keyring-3mToEe/control: No such file or directory
Run Code Online (Sandbox Code Playgroud)

当我尝试使用远程 GIT 命令时出现此错误:

Gkr-Message: couldn't connect to dbus session bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
Run Code Online (Sandbox Code Playgroud)

小智 2

添加到 ~/.bashrc 末尾

ssh-add -l &>/dev/null
if [ "$?" == 2 ]; then
  test -r ~/.gnome-keyring && \
    source ~/.gnome-keyring && \
    export DBUS_SESSION_BUS_ADDRESS GNOME_KEYRING_CONTROL SSH_AUTH_SOCK GPG_AGENT_INFO GNOME_KEYRING_PID

  ssh-add -l &>/dev/null
  if [ "$?" == 2 ]; then
    (umask 066; echo `dbus-launch --sh-syntax` > ~/.gnome-keyring; gnome-keyring-daemon >> ~/.gnome-keyring)
    source ~/.gnome-keyring && \
    export DBUS_SESSION_BUS_ADDRESS GNOME_KEYRING_CONTROL SSH_AUTH_SOCK GPG_AGENT_INFO GNOME_KEYRING_PID
  fi
fi
Run Code Online (Sandbox Code Playgroud)

如果公钥和私钥都位于 ~/.ssh 中,凭据会自动添加到 ssh-agent 中。钥匙串存储应用程序,例如 mysql-workbench(需要 Xming)也可以工作。

您可以在 bash 启动时忽略此警告

gnome-keyring-daemon: insufficient process capabilities, unsecure memory might get used
Run Code Online (Sandbox Code Playgroud)

来源: https://www.reddit.com/r/bashonubuntuonwindows/comments/4yhch4/using_gnomekeyringdaemon_for_ssh_keys/


小智 1

您不需要在 .bashrc 中进行修改

安装 keyrings.alt

sudo pip install keyrings.alt

  • 这在很多层面上都是错误的: 1. `sudo pip install` 会破坏您的系统 python 安装(keyrings.alt 打包在 Debian 和 Ubuntu 中,因此安装包 `python-keyrings.alt` 或 `python3-keyrings.alt ` 就足够了。2.只有当您使用的工具使用 Python keyring 包时,这才会有帮助,否则根本无法修复 (3认同)