ssh -T -p 443 [email protected] Permission denied (publickey). centos
时间: 2025-04-06 21:06:27 浏览: 48
### SSH 连接 GitHub 出现 `Permission denied (publickey)` 的解决方案
当在 CentOS 上尝试通过 SSH 访问 GitHub 并收到 `Permission denied (publickey)` 错误时,这通常是由于本地未正确配置 SSH 密钥或 GitHub 未识别该密钥所致。以下是详细的分析和解决办法:
#### 配置 SSH 秘钥
1. **进入 SSH 配置目录**
切换到 `.ssh` 目录并确认是否存在现有的 SSH 密钥文件:
```bash
cd ~/.ssh/
ls
```
如果不存在任何密钥文件,则需要重新生成。
2. **生成新的 SSH 密钥**
使用以下命令生成一个新的 RSA 类型的 SSH 密钥,并将其与指定的电子邮件关联:
```bash
ssh-keygen -t rsa -b 4096 -C "[email protected]"
```
此处需替换为实际使用的邮箱地址[^5]。执行过程中会提示设置密码(可选),按 Enter 跳过即可完成默认路径下的密钥生成。
3. **复制公钥至剪贴板**
将新生成的公钥内容读取出来准备上传给 GitHub:
```bash
cat ~/.ssh/id_rsa.pub
```
4. **添加公钥到 GitHub**
登录 GitHub 帐户后转至账户设置中的 “SSH and GPG keys”,点击“New SSH key”按钮粘贴上述获取的内容提交保存[^2]。
#### 修改 SSH Config 文件
为了区分多个远程主机的身份验证需求,可以自定义配置特定于 GitHub 的连接参数。编辑或者新建一个名为 `~/.ssh/config` 的文件加入如下条目:
```plaintext
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
```
这里假设刚才创建的是标准名称 `id_rsa`;如果有其他命名比如例子提到过的 `id_custome_name` ,则相应调整路径指向正确的私钥位置[^3]。
#### 测试连接有效性
最后一步测试是否成功建立无密码认证通道向目标服务器发起握手请求:
```bash
ssh -T [email protected]
```
如果一切正常应该返回欢迎消息类似于:“Hi username! You've successfully authenticated...”。否则再次核查每环节设定直至排除所有潜在障碍为止[^4]。
```python
import os
def check_ssh_key():
home_dir = os.path.expanduser("~")
ssh_path = f"{home_dir}/.ssh/"
if not os.path.exists(ssh_path):
print(f"No .ssh directory found at {ssh_path}. Creating one...")
os.makedirs(ssh_path)
private_key_file = f"{ssh_path}id_rsa"
public_key_file = f"{private_key_file}.pub"
if not os.path.isfile(private_key_file) or not os.path.isfile(public_key_file):
email = input("Enter your email address to generate a new SSH key: ")
os.system(f'ssh-keygen -t rsa -b 4096 -C "{email}"')
check_ssh_key()
print("Please add the content of ~/.ssh/id_rsa.pub into your GitHub account settings under 'SSH Keys'. Afterward, test with:")
print("`ssh -T [email protected]`")
```
阅读全文
相关推荐

















