github提交代码不支持用户名密码问题解决

引言

        随着 GitHub 取消了使用用户名和密码方式提交代码,使用 SSH 密钥或个人访问令牌(Personal Access Token)成为了推荐的方式。本文将详细介绍如何配置和使用 SSH 密钥向 GitHub 提交代码,特别是当您需要管理多个 SSH 密钥时的处理方法。

配置多个 SSH 密钥

1. 使用不同的文件名

        您可以为不同的私钥创建不同的文件,例如 id_rsa_github 和 id_rsa_work。这样可以方便地区分和管理不同的私钥。

2. 使用 SSH 配置文件

        在 ~/.ssh/config 文件中,您可以为不同的目标主机指定不同的私钥文件。例如:

Host github.com
  IdentityFile ~/.ssh/id_rsa_github

Host work.example.com
  IdentityFile ~/.ssh/id_rsa_work
		

3. 使用 ssh-agent

        您可以将多个私钥添加到 ssh-agent 中,它会自动尝试使用所有添加的密钥。启动 ssh-agent 并添加私钥的命令如下:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa_work
		

4. 使用 -i 选项

在命令行中,您可以使用 -i 选项指定要使用的私钥文件。例如:

ssh -i ~/.ssh/id_rsa_github git@github.com
		

使用 SSH 密钥提交代码

1. 确保 SSH 密钥已添加到 GitHub 账户

        首先,确保您的 SSH 密钥已经添加到 GitHub 账户中。您可以在 GitHub 的设置页面中找到 SSH 密钥管理选项。

2. 检查远程仓库 URL

        使用以下命令查看当前的远程仓库 URL:

git remote -v
		

        如果远程 URL 是 HTTPS 格式(以 https:// 开头),您需要将其更改为 SSH 格式。使用以下命令更改:

git remote set-url origin git@github.com:username/repository.git
		

        请将 username 替换为您的 GitHub 用户名,repository 替换为您的仓库名称。

3. 再次检查远程 URL

        再次检查远程 URL 是否已更改为 SSH 格式:

git remote -v
		

4. 提交代码

        现在,您可以像往常一样使用 git 命令提交代码:

git add .
git commit -m "Your commit message"
git push origin main
		

        注意:如果您的默认分支不是 main,请相应地更改分支名称。

5. 处理 SSH 密钥权限问题

        如果您遇到类似 Permissions 0644 for '/root/.ssh/id_rsa_github' are too open 的错误提示,说明您的 SSH 私钥文件权限设置过于开放,可能会被其他用户访问,这是一个安全隐患。我们需要修改文件权限来解决这个问题。

修改文件权限
  1. 更改 SSH 私钥文件的权限:

    chmod 600 /root/.ssh/id_rsa_github
    

    这条命令将文件权限设置为只有文件所有者可以读写,其他用户没有任何权限。

  2. 如果您的 .ssh 目录权限也不正确,可以使用以下命令修复:

    chmod 700 /root/.ssh
    

    这将确保只有文件所有者可以访问 .ssh 目录。

  3. 检查 SSH 密钥文件的所有权:

    ls -l /root/.ssh/id_rsa_github
    

    确保文件的所有者是当前用户(在这种情况下应该是 root)。

  4. 如果所有权不正确,可以使用以下命令更改:

    chown root:root /root/.ssh/id_rsa_github
    

        完成这些步骤后,再次尝试 Git 操作。

### 如何在 Git 中仅使用用户名密码进行代码提交 为了理解如何通过用户名密码来完成 Git 提交,重要的是要认识到现代版本控制系统通常推荐使用 SSH 密钥或个人访问令牌 (PAT),而不是直接利用明文形式的用户名密码组合来进行身份验证。然而,在某些情况下确实可以配置 Git 使用 HTTP/HTTPS 方式的 URL 来推送更改,并提供基本认证信息。 当设置远程仓库地址时可以选择 HTTPS 协议并输入完整的 URL 后面附带 `username` 参数: ```bash git remote set-url origin https://<your_username>@github.com/<your_username>/<repository>.git ``` 每次执行 push 或 pull 操作时会被提示输入对应的账户密码[^2]。 对于那些希望简化流程而不必每次都手动键入凭证的情况,可以通过缓存机制保存这些敏感数据一段时间内有效。例如,可以在命令行工具中启用凭据助手功能以便自动处理后续的身份验证请求: ```bash git config --global credential.helper cache # 设置超时期限为900秒(15分钟), 可选参数 git config --global credential.helper 'cache --timeout=900' ``` 需要注意的是这种方法存在一定的安全隐患,因为如果计算机被他人非法获取控制权,则可能会滥用存储下来的登录资料造成潜在风险;因此建议只在受信任环境中采用此方法。 另外一种方式是在克隆项目之初就指定好带有用户名密码的信息作为初始连接字符串的一部分,不过这种方式并不安全也不推荐长期使用,因为它会把密码暴露在网络传输过程中以及历史记录里: ```bash https://<your_username>:<your_password>@github.com/<your_username>/<repository>.git ``` 综上所述,虽然能够实现基于用户名密码的身份验证过程用于提交代码到远端服务器,但从安全性角度出发还是强烈建议考虑其他更为稳妥的选择比如SSH密钥对或者OAuth Token等替代方案。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

peihexian

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值