ssh%_expand 令牌 %n 不起作用

ssh%_expand 令牌 %n 不起作用

我看到在ssh_配置手册页和打开ssh我应该能够使用的网站%n 令牌查找给定主机条目的身份文件时。

OpenSSH 的 ssh(1) 和 sshd(8) 使用的percent_expand 令牌

GitHub 允许使用 ssh 令牌作为部署令牌,但阻止您在多个存储库上多次使用令牌。因此,我想使用通配符来创建单个配置文件,无论我必须创建多少个单独的项目密钥:

host github-*      
    Hostname github.com
    User git
    IdentityFile %d/.ssh/github/%n
    IdentitiesOnly yes

然后我在该目录下放了一个 github-MyPackage 公私钥对~/.ssh/github/

它找到通配的配置文件并且 %d 工作正常,但如果我尝试使用 %n 进行 git 克隆以从原始命令行指定的主机别名中查找身份文件名:

> git clone github-MyPackage:/myorganization/MyPackage.git

Cloning into 'MyPackage'...
percent_expand: unknown key %n
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

这不仅仅是 git 访问它的方式,因为仅使用一个简单的 ssh 命令它也会失败:

> ssh github-MyPackage
percent_expand: unknown key %n

我尝试用谷歌搜索,但在 %n 上没有找到任何内容。这是没有完全实施还是我做错了什么?

答案1

可能你的 ssh 版本太旧,你可以检查一下ssh -V

OpenSSH_7.9p1%n仅支持某些关键字(来自本地安装的手册页):

匹配执行
控制路径
本地命令
远程命令

我无法判断哪个特定版本将此令牌添加到IdentityFile,但它可以与 OpenSSH_8.9p1 一起使用以获取更多关键字:

证书文件
控制路径
身份代理
身份文件
本地转发
匹配执行
远程命令
远程转发
用户已知主机文件
代理命令

相关内容