ssh 公私钥(github)

自学AI的鲨鱼儿 2024-07-19 12:07:02 阅读 88

目录

一、生成ssh公私钥

步骤 1: 打开终端

步骤 2: 生成密钥对

步骤 3: 输入密码(可选)

步骤 4: 验证生成的密钥

步骤 5: 使用SSH密钥

二、 git 上传项目

三、尝试向GitHub推送代码时收到"Permission denied (publickey)"错误

步骤 1: 确认SSH公钥已添加到GitHub

步骤 2: 确认SSH密钥已加载到SSH代理

步骤 3: 尝试SSH到GitHub

步骤 4: 再次尝试git操作

三、vscode 远程链接 ssh config 配置


一、生成ssh公私钥

生成自定义名称的SSH公钥和私钥对,需要使用ssh-keygen命令,这是大多数Linux和Unix系统自带的标准工具。下面,简单展示如何使用ssh-keygen命令来生成具有自定义名称的SSH密钥对

步骤 1: 打开终端

首先,打开我们的终端(或命令提示符)。在Windows上,我们可能需要使用PuTTYgen或者通过Git Bash来执行相似的命令,但这个指南将关注标准的Unix-like环境。

步骤 2: 生成密钥对

接下来,使用以下命令生成一个新的SSH密钥对。这里,your_custom_name应该被替换为我们想要用于密钥文件的名称。不要加.pub或者任何其它的后缀,因为ssh-keygen会自动为公钥文件添加.pub后缀。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/your_custom_name

这条命令中的参数说明如下:

-t rsa: 指定密钥类型,这里是RSA。-b 4096: 指定密钥的位数,这里是4096位,当前推荐的安全长度。-C "your_email@example.com": 添加一个注释(通常是电子邮件地址)到密钥中。这对于识别用途在哪、属于谁很有帮助。-f ~/.ssh/your_custom_name: 指定生成密钥的路径和文件名。这里~/.ssh/是SSH目录的标准位置,your_custom_name是你的自定义文件名。

步骤 3: 输入密码(可选)

在执行命令后,系统可能会提示我们输入一个密码(passphrase)。这一步是可选的,但是推荐我们为密钥对设置一个密码以增加安全性。如果不想设置密码,直接按回车键跳过。

步骤 4: 验证生成的密钥

生成密钥对后,我们可以通过列出~/.ssh目录的内容来验证它们是否成功创建:

ls ~/.ssh

应该看到我们的自定义文件名和同名的.pub文件,例如:

your_custom_name your_custom_name.pub

your_custom_name是私钥文件,而your_custom_name.pub是公钥文件。

步骤 5: 使用SSH密钥

现在我们已经有了自定义命名的SSH密钥对,可以开始使用它们了。例如,我们可以把公钥(.pub文件)添加到想要通过SSH连接的服务器上的~/.ssh/authorized_keys文件中,从而实现无密码登录。

这样,我们就成功生成了一个自定义命名的SSH密钥对。确保保管好私钥,并且只将公钥共享给需要它的服务或个人。

二、 git 上传项目

手把手教你用git上传项目到GitHub(图文并茂,这一篇就够了),相信你一定能成功!! - 知乎GitHub是基于git实现的代码托管。git是目前最好用的版本控制系统了,非常受欢迎,比之svn更好。 GitHub可以免费使用,并且快速稳定。即使是付费帐户,每个月不超过10美刀的费用也非常便宜。 利用GitHub,你可以将…

icon-default.png?t=N7T8

https://zhuanlan.zhihu.com/p/193140870

<code># --------------- 创建新的 --------------------------

echo "# test1" >> README.md

git init

# git add README.md

git add .

git commit -m "first commit"

git branch -M main

git remote add origin git@github.com:kkk935208447/test1.git

git push -u origin main

# ---------------- 已存在的 -------------------------

git remote add origin git@github.com:kkk935208447/test1.git

git branch -M main

git push -u origin main

https://github.com/kkk935208447/test1

github上传大文件(>100M)​​​​​​​Git Large File Storage | Git Large File Storage (LFS) replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server like GitHub.com or GitHub Enterprise.Git Large File Storage (LFS) replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server like GitHub.com or GitHub Enterprise.

icon-default.png?t=N7T8

https://git-lfs.com​​​​​​​

三、尝试向GitHub推送代码时收到"Permission denied (publickey)"错误

当在尝试向GitHub推送代码时收到"Permission denied (publickey)"错误,意味着GitHub无法通过公钥认证的SSH连接。这个问题通常由以下几个原因引起:

未将SSH公钥添加到GitHub账户:GitHub需要公钥来验证身份。SSH密钥没有加载到SSH代理:即使有一个SSH公钥,它也需要被SSH代理加载。SSH配置问题:有时候SSH配置不正确也会导致这个问题。

按以下步骤来解决这个问题:

步骤 1: 确认SSH公钥已添加到GitHub

在你的电脑上打开终端,使用<code>cat命令查看你的公钥内容。假设密钥名称为id_rsa.pub,运行:

cat ~/.ssh/id_rsa.pub

如果使用的是其他名称,请相应地替换文件名。

登录到GitHub账户,进入Settings > SSH and GPG keys

点击New SSH key 按钮,将公钥(步骤1中显示的内容)粘贴到框中,并保存。

步骤 2: 确认SSH密钥已加载到SSH代理

运行ssh-add -l查看已加载的密钥。如果密钥已加载,这个命令将列出它们。

ssh-add -l

如果你的密钥没有被列出,使用ssh-add ~/.ssh/id_rsa来添加它。如果你使用的是自定义名称,确保正确地替换了路径和文件名。

ssh-add ~/.ssh/custom_id_rsa

# 我的系统是mac os,SSH agent 在一段时间后自动清除了添加的密钥,换句话来说上面的命令添加是临时的,下面有两种解决方案

1. ssh-add -t 12h ~/.ssh/custom_id_rsa # 这会将密钥添加到 SSH agent 并保持 12 小时。

2. ssh-add -K ~/.ssh/custom_id_rsa # 将密钥永久添加到 SSH agent

ssh-add --apple-use-keychain ~/.ssh/custom_id_rsa # 在较新的 macOS 版本中,-K 选项可能已被弃用,你可能需要使用 --apple-use-keychain 选项代替。

步骤 3: 尝试SSH到GitHub

运行以下命令来测试你的SSH连接到GitHub:

ssh -T git@github.com

如果连接成功,你将看到一条欢迎信息。这表示SSH设置正确。

步骤 4: 再次尝试git操作

在确认SSH设置无误后,再次尝试执行你的git命令:

git push -u origin main # 或 master等

怎么删除之前添加的一些无效的SSH代理呢?

删除之前add的无效SSH代理的方式

假设之前添加了几个不同的密钥到SSH代理,现在想删除它们:

查看已加载的密钥

ssh-add -l

删除特定的密钥(例如:~/.ssh/custom_key):

ssh-add -d ~/.ssh/custom_key

删除所有的密钥:

ssh-add -D

三、vscode 远程链接 ssh config 配置

Host 主机1 # 可定义名称

HostName 远程ip地址或域名

Port 22435 # 远程端口

User root # 远程登录名

IdentityFile /Users/XXXXX/.ssh/id_rsa_XXXXX # 私钥地址(可选)

Host 主机2 # 可定义名称

HostName 远程ip地址

Port 19351 # 远程端口

User root # 远程登录名

LocalForward 8080 localhost:8080 # 映射端口(可选)

IdentityFile /Users/XXXXX/.ssh/id_rsa_XXXXX # 私钥地址(可选)

Host 主机3

HostName 远程ip地址或域名

User root

ForwardAgent yes # 不使用私钥,每次需输入密码

​​​​​​​



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。