在 Linux 中设置 ssh 组密钥而不影响 ~/.ssh/config

在 Linux 中设置 ssh 组密钥而不影响 ~/.ssh/config

我必须设置一个用于发布到远程 git 存储库的 ssh 组密钥。

由于 git(以及我假设的许多其他程序)不允许定义标志滞后,因此ssh -i将使用哪个键的信息来自默认值或在~/.ssh/config

对于需要具备此功能的用户(即在其~/.ssh/config文件中添加适当的条目),这将需要一项新的管理任务。

有什么方法可以省去这些麻烦吗?我找不到任何可以被 OpenSSH 读取的环境变量,因为那将是一个解决方案(通过创建一个完成所需操作的包装脚本)。

答案1

因此答案如下(感谢 tink):

使用 ssh-agent 保存密钥始终有效。为此,您可以将调用封装在脚本中:

#!/bin/bash
key=$1
[[ "$SSH_AGENT_PID" ]] || eval $(ssh-agent)
ssh-add $key

#...the rest of the script...

在 git 的特定情况下,有一个GIT_SSH环境变量指向将被调用的命令(而不是 ssh)。因此可以ssh使用-i标志发出。

只是警告您,这是一个概念证明,您需要确保在加载脚本后环境不会受到影响(即,如果存在代理并且未加载密钥,则需要删除密钥,如果没有代理,则删除代理等)

相关内容