设置ssh组密钥而不影响Linux中的〜/ .ssh / config


1

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

由于git(以及我假设许多其他程序)不允许定义标志滞后 ssh -i 将要使用的密钥的信息来自默认值或定义的内容 ~/.ssh/config

这将需要为需要具备此能力的用户执行新的管理任务(即在其中添加适当的条目) ~/.ssh/config 文件)。

有什么方法可以省去这个努力吗?我无法找到任何可由OpenSSH读取的环境变量,因为这将是一个解决方案(通过创建执行所需的包装脚本)。


使用ssh-agent会让问题消失吗?它可以保存有关多个身份的信息。
tink

@tink:谢谢这是一个好主意,之后很难保持用户环境的清洁,但它确实有效。
estani

Answers:


0

所以答案如下(感谢tink):

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

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

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

在git theres a的特殊情况下 GIT_SSH 环境变量,指向将被调用的命令而不是ssh。所以可以发布 ssh 随着 -i 旗。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.