【ssh】ssh密钥配置无效(如git@github.com: Permission denied (publickey).)

当SSH密钥不是默认的id_rsa时,需要编辑ssh_config文件添加IdentityFile指令指定私钥路径。例如,如果密钥名为my_key,则添加`IdentityFile~/.ssh/my_key`。可以按Host*规则匹配特定服务器使用特定密钥。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用ssh-keygen创建密钥后,默认会将公司钥保存至~/.ssh目录下,文件名分别为id_rsaid_rsa.pub(如果你使用的是rsa加密)。这种情况下,一般不需要配置其他内容即可使用这个密钥。


但是,如果你生成的密钥不是这个名字!
那么ssh是不会默认使用这个密钥的!
这也很自然,毕竟~/.ssh下可能放着一堆密钥,怎么知道用哪个呢?


要使用一个密钥,需要编辑/etc/ssh/ssh_config文件(需要root权限),把你要使用的密钥声明出来:

Host *
	# 默认情况下这个文件中的Host *下有很多注释
	# 不用管这些注释,直接新增一行以下内容即可
	IdentityFile ~/.ssh/<你使用的密钥的【私钥】文件名>

假如你创建的密钥叫my_key(私钥)和my_key.pub(公钥),那么这里需要新增的内容就是

	IdentityFile ~/.ssh/my_key

保存后会在下次连接时生效。


显然Host *行是声明匹配规则的,因此如果你想在某个特定的server使用特定的配置(包括特定的密钥)只需要新建一个Host段,修改匹配规则即可。

<think>好的,我现在需要解决用户在Mac终端中使用SSH连接GitHub时出现的“Permission denied (publickey)”问题。根据用户提供的参考引用,问题通常是由于SSH密钥生成配置正确导致的。首先,我得回忆一下SSH密钥的基本流程,以及如何在Mac上操作。 首先,用户可能没有生成SSH密钥,或者密钥已经过期。根据引用[1]和[4],生成新的SSH密钥是一个常见的解决步骤。用户需要运行ssh-keygen命令,指定类型和邮箱。过要注意,Mac上的命令行可能有些差异,比如路径或权限问题。另外,生成密钥后需要将公钥添加到GitHub账户,这一点在引用[3]中提到过。 然后,用户可能已经生成密钥,但是没有将私钥添加到ssh-agent中。引用[3]中提到需要使用ssh-add命令,这可能也是关键步骤。在Mac上,ssh-agent有时会自动启动,或者添加密钥需要手动操作。需要检查ssh-agent的状态,并确保私钥被正确加载。 接下来,用户可能配置了多个SSH密钥,导致GitHub无法识别正确的密钥。这时候需要检查~/.ssh/config文件,确保Host github.com配置正确指向私钥文件。如果没有这个文件,可能需要创建并配置。 此外,权限问题也可能导致错误。SSH密钥文件的权限非常严格,如果.ssh目录或密钥文件的权限过于开放,会导致拒绝连接。需要确保目录权限是700,私钥是600,公钥是644。这点在引用中没有明确提到,但根据经验,这也是常见的问题点。 测试连接是否成功,用户可以使用ssh -T git@github.com命令,如引用[2]所述。如果测试返回成功消息,说明配置正确;如果还是失败,可能需要进一步检查。 可能还有其他的问题,比如GitHub账户中没有正确添加公钥,或者添加后没有保存。用户需要仔细核对公钥内容,确保完全复制粘贴,没有多余空格或遗漏。 总结一下,解决步骤可能包括:生成新的SSH密钥,添加到ssh-agent,配置SSH配置文件,设置正确的文件权限,将公钥添加到GitHub账户,最后测试连接。需要逐步指导用户完成这些步骤,并检查每个环节是否正确执行。 另外,用户可能在操作过程中遇到其他问题,比如命令行工具版本过旧,或者系统配置问题。需要提醒用户注意终端中的错误提示,根据具体信息调整解决方案。例如,如果ssh-keygen命令的选项在旧版本中可用,可能需要升级或使用替代参数。 最后,确保用户理解每个步骤的作用,避免遗漏关键点。例如,生成密钥后必须将公钥添加到GitHub,而仅仅是本地存在。同时,权限设置和ssh-agent的配置都是容易忽略但重要的步骤。</think>### 解决Mac终端SSH连接GitHub时出现“Permission denied (publickey)”的方法 #### 步骤1:生成新的SSH密钥 1. 打开Mac终端,输入以下命令生成密钥(替换为你的GitHub注册邮箱): ```bash ssh-keygen -t ed25519 -C "your_email@example.com" ``` 如果系统支持`ed25519`算法,改用RSA: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 2. 按提示保存密钥(默认路径`~/.ssh/id_ed25519`或`~/.ssh/id_rsa`)[^4]。 #### 步骤2:将SSH密钥添加到ssh-agent 1. 启动ssh-agent: ```bash eval "$(ssh-agent -s)" ``` 2. 将私钥添加到ssh-agent: ```bash ssh-add ~/.ssh/id_ed25519 # 或替换为你的私钥文件名 ``` 如果出现`Could not open a connection to your authentication agent`,先执行`ssh-agent bash`再重试[^3]。 #### 步骤3:将公钥添加到GitHub账户 1. 复制公钥内容(如`~/.ssh/id_ed25519.pub`): ```bash pbcopy < ~/.ssh/id_ed25519.pub ``` 2. 登录GitHub,进入**Settings → SSH and GPG keys → New SSH key**,粘贴公钥并保存[^1][^3]。 #### 步骤4:检查SSH配置文件 1. 创建或编辑`~/.ssh/config`文件: ```bash Host github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519 # 与步骤1生成的私钥路径一致 AddKeysToAgent yes ``` 2. 设置文件权限: ```bash chmod 600 ~/.ssh/config ``` #### 步骤5:验证连接 执行测试命令: ```bash ssh -T git@github.com ``` 若显示`Hi username! You've successfully authenticated`,则配置成功[^2]。 #### 步骤6:检查文件权限 确保密钥文件权限正确: ```bash chmod 700 ~/.ssh chmod 600 ~/.ssh/id_ed25519 # 私钥权限 chmod 644 ~/.ssh/id_ed25519.pub # 公钥权限 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值