![在 Linux 中设置 ssh 组密钥而不影响 ~/.ssh/config](https://linux22.com/image/1337878/%E5%9C%A8%20Linux%20%E4%B8%AD%E8%AE%BE%E7%BD%AE%20ssh%20%E7%BB%84%E5%AF%86%E9%92%A5%E8%80%8C%E4%B8%8D%E5%BD%B1%E5%93%8D%20~%2F.ssh%2Fconfig.png)
我必须设置一个用于发布到远程 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
标志发出。
只是警告您,这是一个概念证明,您需要确保在加载脚本后环境不会受到影响(即,如果存在代理并且未加载密钥,则需要删除密钥,如果没有代理,则删除代理等)