0


使用SSH进行GitHub的推送

使用SSH进行GitHub的推送是一种安全且便捷的方法。
以下是详细的步骤,配置SSH并通过SSH推送到GitHub:

对于同一个电脑,已经配置过的可以直接从步骤五开始

步骤一:检查是否已有SSH密钥

首先,检查计算机上是否已经有SSH密钥对:

ls -al ~/.ssh

如果看到

id_rsa

id_rsa.pub

(或

id_ed25519

id_ed25519.pub

)文件,说明已经有SSH密钥。如果没有,请继续下面的步骤生成一个新的SSH密钥对。

我的:

(base) rooter@rooter:~$ ls -al ~/.ssh
total 12
drwx------  2 rooter rooter 409610月 1421:56 .
drwxr-xr-x 30 rooter rooter 409610月 1422:14 ..
-rw-r--r--  1 rooter rooter  88810月 1422:23 known_hosts

~/.ssh 目录中只有 known_hosts 文件,没有 SSH 密钥对(如 id_rsa 和 id_rsa.pub 或 id_ed25519 和 id_ed25519.pub)

步骤二:生成新的SSH密钥

  1. 生成SSH密钥:推荐使用Ed25519算法(如果你的系统支持),因为它更安全且性能更好。如果不支持,可以使用RSA。ssh-keygen -t ed25519 -C "[email protected]"`````` ssh-keygen -t ed25519 -C [email protected]如果需要使用RSA,可以使用:ssh-keygen -t rsa -b 4096 -C "[email protected]"
  2. 按照提示操作:- 保存密钥位置: 默认情况下,按回车键选择默认路径(~/.ssh/id_ed25519~/.ssh/id_rsa)。- 设置密码短语(可选): 为密钥设置一个密码短语以增加安全性,或者直接按回车键跳过。
(base) rooter@rooter:~$ ssh-keygen -t ed25519 -C [email protected]
Generating public/private ed25519 key pair.
Enter fileinwhich to save the key (/home/rooter/.ssh/id_ed25519): 
/home/rooter/.ssh/id_ed25519 already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/rooter/.ssh/id_ed25519
Your public key has been saved in /home/rooter/.ssh/id_ed25519.pub
The key fingerprint is:
omit
The key's randomart image is:
omit

步骤三:启动SSH代理并添加密钥

  1. 启动SSH代理:eval"$(ssh-agent -s)"
  2. 添加SSH密钥到代理:ssh-add ~/.ssh/id_ed25519或者,如果使用的是RSA密钥:ssh-add ~/.ssh/id_rsa

步骤四:将SSH公钥添加到GitHub

  1. 复制SSH公钥内容:cat ~/.ssh/id_ed25519.pub或者,如果使用的是RSA密钥:cat ~/.ssh/id_rsa.pub复制输出的内容(以ssh-ed25519ssh-rsa开头的字符串)。 全部都是
  2. 登录GitHub并添加SSH密钥:- 登录你的GitHub账户。- 点击右上角的头像,选择“Settings(设置)”。- 在左侧菜单中选择“SSH and GPG keys”。- 点击“New SSH key”按钮。- 填写一个标题(如“我的电脑”),并在“Key”字段中粘贴刚才复制的公钥内容。- 点击“Add SSH key”。

步骤五:验证SSH连接

在终端中运行以下命令,验证是否成功连接到GitHub:

ssh -T [email protected]

第一次连接时,可能会提示确认主机指纹,输入

yes

继续。

成功连接后,应该会看到如下消息:

Hi galaxy-vagrant! You've successfully authenticated, but GitHub does not provide shell access.

步骤六:配置Git远程仓库使用SSH

  1. 移除错误的远程仓库URL:由于之前使用的是HTTPS URL,需要先移除:git remote remove origin
  2. 添加正确的SSH远程仓库URL:SSH格式的URL为[email protected]:用户名/仓库名.git。 replace myusr/myrepo.gitgit remote add origin [email protected]:myusr/myrepo.git
  3. 验证远程仓库URL是否正确:git remote -v应该显示类似如下内容:origin [email protected]:myusr/myrepo.git(fetch)origin [email protected]:myusr/myrepo.git (push)

步骤七:推送分支到GitHub

现在,可以使用SSH方式推送分支了:

git push -u origin v1.0
  • -u 参数将本地分支 v1.0 与远程的 v1.0 分支关联起来,方便后续使用 git pushgit pull

常见问题排查

  1. 权限问题:- 确认SSH公钥已正确添加到GitHub账户。- 确保使用的是正确的GitHub账户,与添加公钥的账户一致。
  2. SSH代理问题:- 确保SSH代理已启动并添加了密钥。- 可以重启SSH代理并重新添加密钥:eval"$(ssh-agent -s)"ssh-add ~/.ssh/id_ed25519
  3. 防火墙或网络问题:- 确保网络允许SSH连接到GitHub(端口22)。- 如果公司或校园网络有限制,可以尝试使用GitHub提供的替代端口:ssh -T -p 443 [email protected]
  4. 确认仓库存在:- 确认仓库 myrepo 存在于 myusr 账户下,并且有推送权限。

常见问题解答

一旦在同一个电脑上成功配置了 SSH 密钥,并将公钥添加到了 GitHub 账户中,通常情况下不需要每次都重新配置。只要满足以下条件,就可以直接通过 SSH 进行远程连接和操作:

1. SSH 密钥对持久存在
  • 私钥 (~/.ssh/id_rsa~/.ssh/id_ed25519)公钥 (~/.ssh/id_rsa.pub~/.ssh/id_ed25519.pub) 文件保存在你的电脑上,并且没有被删除或移动。
  • 如果你为私钥设置了密码短语,确保你记得密码,并且 SSH 代理(ssh-agent)在需要时能够访问该密码。
2. SSH 代理(ssh-agent)正在运行
  • SSH 代理 用于管理你的私钥,确保你在需要时能够自动输入密码短语(如果设置了)。
  • 在大多数现代操作系统中,SSH 代理会在登录时自动启动并加载你的私钥。如果没有自动启动,你可以手动启动并添加密钥:eval"$(ssh-agent -s)"ssh-add ~/.ssh/id_ed25519 # 或者使用 id_rsa为了简化这一过程,你可以将上述命令添加到你的 shell 启动脚本(如 .bashrc.zshrc)中。
3. 公钥已正确添加到 GitHub
  • 确保你生成的 公钥 已经正确添加到了你的 GitHub SSH 密钥设置 中。
  • 如果你更换了电脑或重新生成了 SSH 密钥,需要将新的公钥添加到 GitHub。
4. 验证远程连接

你可以通过以下命令验证 SSH 连接是否正常工作:

ssh -T [email protected]

成功连接后,你应该会看到类似如下的消息:

Hi your-username! You've successfully authenticated, but GitHub does not provide shell access.
5. 配置 Git 远程仓库使用 SSH URL

确保你的 Git 仓库的远程地址使用的是 SSH URL 而不是 HTTPS URL。你可以通过以下命令查看当前的远程仓库地址:

git remote -v

如果显示的是 HTTPS 地址(如

https://github.com/username/repo.git

),你可以将其更改为 SSH 地址:

git remote set-url origin [email protected]:username/repo.git
6. 无需频繁重新配置

在大多数情况下,只要满足上述条件,你无需每次都重新配置 SSH。你的 SSH 配置会一直有效,直到你手动更改或删除相关的密钥和配置。

注意事项
  1. 安全性:- 保护私钥:确保你的私钥文件(如 ~/.ssh/id_rsa~/.ssh/id_ed25519)权限正确(chmod 600),并且不要泄露给他人。- 密码短语:为私钥设置密码短语可以增加安全性,即使私钥被盗,攻击者也无法轻易使用它。
  2. 多设备使用:- 如果你在多台设备上工作,每台设备需要各自生成 SSH 密钥对,并将各自的公钥添加到 GitHub。
  3. 密钥管理:- 如果你怀疑密钥被泄露,及时在 GitHub 上删除相关公钥,并生成新的密钥对。
  4. 更新 GitHub 配置:- 如果你更改了 GitHub 用户名或迁移了仓库,确保更新本地仓库的远程地址。
总结

一旦你在电脑上正确配置了 SSH 密钥,并将公钥添加到了 GitHub,你通常无需每次都重新配置。只需确保 SSH 代理正在运行,私钥文件完好,并且远程仓库使用的是 SSH URL,就可以方便、安全地进行 Git 操作。如果在使用过程中遇到连接问题,可以通过上述步骤进行排查和验证。

标签: python

本文转载自: https://blog.csdn.net/qq_43298381/article/details/142967474
版权归原作者 Eternal-Student 所有, 如有侵权,请联系我们删除。

“使用SSH进行GitHub的推送”的评论:

还没有评论