如果文件名是默认值,SSH 密钥有效,但重命名时无效
Posted
技术标签:
【中文标题】如果文件名是默认值,SSH 密钥有效,但重命名时无效【英文标题】:SSH key works if the file name is the default, but not when it's renamed 【发布时间】:2021-11-17 07:15:41 【问题描述】:我想为我的 GitHub 帐户生成一个 SSH 密钥。按照this 指南,我跑了ssh-keygen -t ed25519 -C "my@email.com"
。我给了它文件名github_main
并输入了密码。一切正常。
运行 ssh-add ~/.ssh/github_main
会出现问题,但我通过使用稍微不同的路径运行命令解决了这个问题。它返回了Identity added: C:/Users/brent/.ssh/github_main (my@email.com)
,所以我认为一切正常。
然后我测试了与ssh -T git@github.com
的连接。它说我已成功连接,但 GitHub 不提供 shell 访问,在我看来,它可以正常工作。
我将 SSH 令牌添加到我的 GitHub 帐户,那里也没有问题。然后,我尝试通过 SSH 克隆我的一个存储库,但奇怪的是它不起作用;它给出了以下结果:
Cloning into 'my-repo'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我尝试使用 HTTPS 克隆相同的存储库,并且效果很好。经过大约一个小时的谷歌搜索和搜索,我多次阅读文件名对结果没有影响,但我决定尝试将文件重命名为原始名称。我将公钥重命名为id_ed25519.pub
,将私钥重命名为id_ed25519
。这一次,当我尝试使用 SSH 克隆存储库时,它会要求输入密码并克隆存储库。这让我很困惑,特别是因为到目前为止我读过的所有内容都告诉我文件名无关紧要。
虽然它适用于将文件命名为 id_ed25519
,但我仍然想重命名这些文件,因为这个文件名没有告诉我任何有关密钥的信息,而且我只能有一个像这样加密的密钥。
【问题讨论】:
在 IdentityFile ssh.com/academy/ssh/config 下的配置文件中定义该键 @Martheen 我在.ssh
文件夹中没有ssh_config
文件,我似乎也没有他们所指的/etc/
文件夹。我也不确定他们希望我在哪里添加 -i
标志。
只需创建文件,它只是一个文本文件。请参阅linuxize.com/post/using-the-ssh-config-file中的示例
【参考方案1】:
你没有使用所有的默认名称,这意味着你需要告诉 ssh 你把东西放在哪里。为了避免每次都重复自己,请在其配置中执行此操作,它会在 ~/.ssh/config
中查找。第一行:addkeystoagent yes
。第二行:host github
。第三行:hostname github.com
。第四行:identityfile path/to/your/privateidentityfile
。 host
行开始一个块,你现在可以说 git clone git@github:yourghid/yourrepo
就足够了。您甚至可以为主机添加user git
行,然后添加git clone github:yourghid/yourrepo
。拼写取决于你,如果我经常拼写,我会拼写像 gh
、host gh
user git
hostname github.com
identityfile ~/.ssh/id_gh
之类的东西,然后 git remote add linux gh:torvalds/linux
就可以了。
比如说man 5 ssh_config
,man 第 5 节是文件格式。 Bash 补全知道这些东西,比如 man 5
并点击几次 tab 告诉它没有真正向我展示你有 doc 的所有文件格式。
【讨论】:
这对我有用,非常感谢!不过,为了让它与默认的 GitHub 克隆命令一起使用,我将host github
更改为 host github github.com
。以上是关于如果文件名是默认值,SSH 密钥有效,但重命名时无效的主要内容,如果未能解决你的问题,请参考以下文章
在 MS Access (VBA) 中使用 ADODB 将非 ASCII 插入 MySQL 数据库时出现“不正确的字符串值”,但重试有效
Paramiko 无法识别 ssh-keygen 生成的 SSH 密钥:“不是有效的 RSA 私钥文件”
Paramiko 无法识别 ssh-keygen 生成的 SSH 密钥:“不是有效的 RSA 私钥文件”
Paramiko 无法识别 ssh-keygen 生成的 SSH 密钥:“不是有效的 RSA 私钥文件”