如何使用 WSL 在 Ubuntu 上安装 ssh 钥匙串

Aba*_*man 5 server ssh ssh-agent openssh windows-subsystem-for-linux

请帮助我了解如何在 WSL 下的 Ubuntu 上安装 SSH 钥匙串,以便我能够配置我的设备.ssh/config来使用它。

我正在接受一些在线培训,并且我尝试像讲师(正在使用 Metatron CLI)一样使用 来设置我的配置文件Usekeychain,但它不会将其识别为有效设置:

Host*
    AddKeysToAgent Yes
    UseKeychain Yes
    IdentityFile ~/.ssh/[his githubfile]
Run Code Online (Sandbox Code Playgroud)

但是当我尝试登录我的服务器时,它说UseKeychain is not a command。从那时起,我一直在尝试寻找如何将我的钥匙添加到我的钥匙串以及如何设置我的配置文件。

Not*_*1ds 9

至少,您的问题的一部分UseKeychain是,这是一个特定于 MacOS 的配置选项,它指示它将解锁的密钥添加到 MacOS 钥匙串(该操作系统的一部分,可以安全地存储它)。因此我们可以假设您的讲师使用的是 Mac。听起来 Mac 版本的 ssh 将读取操作系统钥匙串,该钥匙串通常在首次使用整个操作系统时解锁。我的理解是 Ubuntu 下有类似的东西,比如 Gnome Keyring,但这在 WSL 下不起作用。

因此,我们首先要考虑的事实是,您至少需要删除 Ubuntu 下特定于 MacOS 的配置选项。

如果您的讲师向学生提供该配置文件作为示例,他们确实应该正确执行以下操作:

Host*
    IgnoreUnknown UseKeychain    
    AddKeysToAgent Yes
    UseKeychain Yes
    IdentityFile ~/.ssh/[his githubfile]
Run Code Online (Sandbox Code Playgroud)

这将使其能够在 Mac 以及世界其他地方(90% 以上)上运行。

在 WSL Ubuntu 下,您需要在每个会话中至少输入一次密码才能将其添加到ssh-agent. 如果运行多个 shell 实例,通常需要ssh-agent在每个 shell 中进行新的调用。

或者,您可以安装Funtoo keychainssh-agent ,它可以(更)轻松地在每个 shell 实例中设置连接。这样,只要 WSL 实例正在运行,您就只需输入密码一次。

sudo apt-get install keychain
Run Code Online (Sandbox Code Playgroud)

并将如下内容添加到您的~/.bashrc

eval `keychain --eval --agents ssh id_rsa`
Run Code Online (Sandbox Code Playgroud)

请参阅官方钥匙扣网站了解完整说明。

请注意,一旦 WSL Ubuntu 实例终止(wsl -l -v显示“已停止”),则下次使用时需要再次输入密码。