今天学习了在给i他hub上添加ssh key
具体步骤以及含义:
1、首先,安装git。(已安装则忽略)
$ sudo apt install git
2、检查您的用户目录下的.ssh文件夹中是否已有SSH密钥
$ ls -al ~/.ssh
ls: 无法访问 '/home/seven/.ssh': 没有那个文件或目录 #代表没有相关密钥
有的话则返回类似以下的信息:
3、如果不存在,请用以下命令生成新的SSH密钥
& ssh-keygen -t rsa -b 4096 -C "双引号内填写你的GitHub注册电子邮件地址"
指令含义解释:
ssh-keygen:
SSH提供两种级别的安全验证:
第一种级别(基于口令的安全验证):只要你知道自己帐号和口令,就可以登录到远程主机。
第二种级别(基于密匙的安全验证)ssh-keygen:需要依靠密匙,你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。
-t rsa:
-t即指定密钥的类型,密钥的类型有两种,一种是RSA,一种是DSA;
RSA:RSA加密算法是一种非对称加密算法,是由三个麻省理工的牛人弄出来的,RSA是他们三个人姓的开头首字母组合。
DSA:Digital Signature Algorithm (DSA)是Schnorr和ElGamal签名算法的变种。
为了让两个linux机器之间使用ssh不需要用户名和密码。所以采用了数字签名RSA或者DSA来完成这个操作。ssh-keygen默认使用rsa密钥,所以不加-t rsa也行,如果你想生成dsa密钥,就需要加参数-t dsa。
-b 4096:
b是bit的缩写
-b 指定密钥长度。对于RSA密钥,最小要求768位,默认是2048位。命令中的4096指的是RSA密钥长度为4096位。
DSA密钥必须恰好是1024位(FIPS 186-2 标准的要求)。
-c
邮箱,c 是 comment的缩写
-c 表示要提供一个新注释,用于识别这个密钥,所以 "GitHub注册电子邮件地址" 里面不一定非要填邮箱,可以是任何内容,邮箱仅仅是识别用的key。
获取到的输出结果如下:
Generating public/private rsa key pair.Enter file in which to save the key (home/用户名/.ssh/id rsa):
这是在生成SSH密钥时出现的提示。在这里,系统询问您要将新生成的SSH密钥存储在哪个文件中。默认情况下,它会将密钥存储在 /home/xy8v/.sh/id_rsa文件中,其中“用户名”是当前登录用户的用户名。如果您想将密钥存储在不同的位置,请在提示中输入新的文件路径和名称。
如果您希望使用默认的密钥存储位置,则只需按Enter键即可。这将在默认位置创建一个新的SSH密钥文件并为其生成公共和私有密钥对。相应的公钥将存储在与私钥相同的目录中,并在文件名后面带有扩展名 pub 。通常,您无需更改默认设置,因此只需按Enter键即可完成生成SSH密钥的过程。
Enter passphrase (empty for no passphrase):
这是在生成SSH密钥时出现的另一个提示。这个提示会询问您是否想要为您的私钥设置一个密码 (又称为“passphrase”) 。如果您希望为私钥设置一个密码以增加安全性,可以在此处输入密码并再次确认密码。如果您不想设置密码 (不推荐),则只需按Enter键即可留空并继续下一步操作。
请注意,如果您设置了密码,则在每次使用私钥时都需要输入该密码才能解锁私钥,这可能会稍微麻烦。但是,它确实可以保护您的私钥免受未经授权访问和使用。
如果您决定设置密码但忘记了它,那么您将无法使用该私钥进行身份验证,也无法恢复密码。此外,如果您丢失了私钥文件或私钥文件被盗,您的私人信息可能面临泄露风险。因此,请妥善保管您的SSH私钥,并谨值对待密码的选择。
Enter same passphrase again:
这是在生成SSH密钥时出现的另一个提示,用于确认您所设置的私钥密码。如果您已经在上一步设置了密码,系统将要求您再次输入该密码以确保您没有输错。请再次输入相同的密码以完成设置。如果您在上一步留空并未设置密码则此提示也会留空并直接让您按Enter键继续操作。
请注意,输入密码时,为了安全起见系统可能不会显示任何输入字符,因此您需要谨慎输入。完成此步骤后,系统将生成一个新的SSH密钥,并使用该密码对其进行加密保护,以增加隐私和安全性。
4、复制SSH公钥。输入指令后,复制输出内容
$ cat ~/.ssh/id_rsa.pub
5、将SSH公钥其添加到GitHub账户中
登录GitHub转到"Setting"--->"SSH and GPG keys",单击"New SSH key",并粘贴公钥
6、配置您的Git全局用户名和电子邮件地址
使用以下命令输入您的信息,将“Your Name”和“your email@example.com"替换为您自己的信息
$ git config --global user.name "Your Name"
$ git config --global user.email "your_email@example.com"
# Your Name 是你提交代码的名字,随便起
# your_email@example.com 是你的注册邮箱
配置好的信息,用以下指令查看。会输出以上配置的内容。
$ git config --global --list
7、验证链接
$ ssh -T git@github.com
ssh:
Secure Shell(SSH)的客户端,用于通过网络进行安全连接和执行命令。
-T:这个选项告诉 ssh 不要分配一个伺服端(Pseudo-Terminal)。对于测试连接这种需要仅验证连接是否成功的情况,通常使用这个选项。
git@github.com:这是连接到 GitHub 的 SSH URL。git 是 GitHub 提供的用户账号,用于处理所有的 Git 操作(如克隆、推送、拉取)。
github.com 是 GitHub 的域名。
输出为:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
这条信息表明你已经成功通过 SSH 密钥验证,并且 GitHub 识别了你的账户,但你不能通过 SSH 获取 shell 访问。
Permission denied (publickey).
这表明 SSH 密钥验证失败,可能是因为没有配置 SSH 密钥,或者 GitHub 账户上没有相应的公钥。