添加 ssh key 到 github 以克隆私有仓库

添加 ssh key 到 github 以克隆私有仓库

文章目录

  • 添加 ssh key 到 github 以克隆私有仓库
    • 添加步骤
      • 1. 生成 ssh key (公钥和私钥, 在用户文件夹的 .ssh 目录下。windows 里就是 c 盘的 user 目录下的对应用户目录,linux 为 /home 下对应的用户目录)
      • 2. 将 ssh key 添加到 github
      • 3. 本地验证连接
      • 4.权限问题
    • 问题
      • 1. ssh -T [email protected] 出现 ssh: Could not resolve hostname github.com: Name or service not known.fatal: Could not read from remote repository
      • 2. ssh: connect to host github.com port 22: Connection timed out

使用 github 的 http 从本地链接克隆私有仓库时会出现无权限的情况,而且容易受代理的影响。

添加步骤

1. 生成 ssh key (公钥和私钥, 在用户文件夹的 .ssh 目录下。windows 里就是 c 盘的 user 目录下的对应用户目录,linux 为 /home 下对应的用户目录)

在本地Windows上生成公钥私钥对

ssh-keygen

可指定更多信息,例如

ssh-keygen -t rsa -b 1024 -f id_rsa -C "备注"

参数 解释
-b 采用长度1024bit的密钥对,b=bits,最长4096,不过没啥必要
-t rsa 采用rsa加密方式,t=type
-f 生成文件名,f=output_keyfiles
-C 备注,C=comment

会生成一个公钥私钥对 id_rsa (私钥) 和 id_rsa.pub (公钥)

2. 将 ssh key 添加到 github

id_rsa 不用管, 打开 id_rsa.pub 复制所有内容。 添加到 github

右上角 --> setting --> SSH keys and GPG keys --> new SSH key

把 id_rsa.pub 文件中的内容复制到对应位置就可以啦。

3. 本地验证连接

ssh -T [email protected]

之后 输入 yes 出现 You’ve successfully authenticated, but GitHub does not provide shell access. 则成功配置

之后就可通过 ssh 连接github 也可克隆私有仓库。

4.权限问题

要保证密钥文件对只可被本用户读写。否则会报权限错误,在连接时会被阻止访问。可参考windows10, 自带的OpenSSH, key权限问题, 文件权限问题 。
在 LInux 系统中 可将 .ssh 目录权限设为 600 甚至 400(只有所有者有读权限),将 authorized_keys 文件权限设为 400。

问题

1. ssh -T [email protected] 出现 ssh: Could not resolve hostname github.com: Name or service not known.fatal: Could not read from remote repository

ping github.com 时发现也无法解析,可能是域名解析出现问题
解决方法: 在 hosts (C:\Windows\System32\drivers\etc\hosts ) 文件中 添加 192.30.252.128 github.com (不一定是这个,自行百度)

2. ssh: connect to host github.com port 22: Connection timed out

是因为没配置好 ssh 的 config 文件

在 上述的 .ssh 目录下 找到 config 文件 没有就新建,有就打开然后添加 内容

Host github.com
User 注册github的邮箱
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa (不一定这个文件,添加到 github 的是那个公钥就填对应的私钥文件)
Port 443

之后就可以正常访问啦.[]

参考文章

git传输时使用的两种协议ssh和http的区别

git报错ssh: connect to host github.com port 22: Connection timed out

关于错误:ssh: Could not resolve hostname github.com: Name or service not known.fatal: Could not read from remote repository.

关于关于ssh -T [email protected]连接GitHub失败,以及Permission denied (publickey)问题

你可能感兴趣的:(git,github,linux)