如果文件名是默认名称,则 SSH 密钥有效,但在重命名时则无效

问题描述 投票:0回答:2

我想为我的 GitHub 帐户生成 SSH 密钥。按照this指南,我跑了

ssh-keygen -t ed25519 -C "[email protected]"
。我给它起了文件名
github_main
并输入了密码。一切都很好。
运行
ssh-add ~/.ssh/github_main
出现了问题,但我通过使用稍微不同的路径运行命令来解决该问题。它返回了
Identity added: C:/Users/brent/.ssh/github_main ([email protected])
,所以我认为一切正常。

然后我用

ssh -T [email protected]
测试了连接。它说我已成功连接,但 GitHub 不提供 shell 访问,在我看来它有效。

我将 SSH 令牌添加到我的 GitHub 帐户,也没有问题。然后,我尝试通过 SSH 克隆我的一个存储库,但奇怪的是不起作用;它给出了以下结果:

Cloning into 'my-repo'...
[email protected]: 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
的文件,但我仍然想重命名这些文件,因为该文件名没有告诉我有关密钥的任何信息,并且我只能像这样加密一个密钥。

git github ssh-keys ed25519
2个回答
10
投票

您没有使用所有默认名称,这意味着您需要告诉 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
,第5节是文件格式。 Bash 补全知道这些东西,说
man 5
并按几次 Tab 键告诉它没有真正向我显示您拥有的文档的所有文件格式。


0
投票

您需要处理

~/.ssh/config
文件:

touch ~/.ssh/config
chmod 600 ~/.ssh/config

之后写下

~/.ssh/config
文字:

Host github.com
  User git
  IdentityFile ~/.ssh/<custom_name>
© www.soinside.com 2019 - 2024. All rights reserved.