使用ssh连接gitHub

github每次pull/push代码时要求推送代码的用户是合法的,所以每次推送时候都要输入账号密码用以验证用户是否为合法用户,而ssh是一种安全的传输模式,可以代替用户的这一“输入账号密码”的行为来验证用户。

github的两种操作方式

1.https

  • 可以随意克隆github上的项目,而不管是谁的;在pull/push的时候是需要验证用户名和密码的

2.ssh

  • 克隆者必须是拥者或管理员,且需要先添加 SSH key ,否则无法克隆。在pull/push的时候不再是验证用户名和密码,而是通过验证ssh的方式来验证用户。

ssh(安全外壳协议)

  • 定义:
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。 --百度百科
  • 功能:
传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式, 就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、PoP、甚至为PPP提供一个安全的"通道"--百度百科

使用步骤

1.查看是否已经存在ssh秘钥

1>打开git bash,输入

$ cd ~/.ssh
$ ls
  • 如果,提示不存在此目录,则进行第二步操作,否则,你本机已经存在ssh公钥和私钥,可以略过第二步,直接进入第三步操作。

2>生成ssh秘钥

$ ssh-keygen -t rsa -C "your_email@example.com"
  • 代码参数含义:
    -t 指定密钥类型,默认是 rsa ,可以省略。
    -C 设置注释文字,比如邮箱。
    -f 指定密钥文件存储文件名。
    根据提示,需要指定文件位置和密码,如果是你足够放心,其实都可以直接回车,不需要什么密码。执行完以后,可在/c/Users/you/.ssh/路径下看到刚生成的文件:id_rsa和id_rsa.pub。即公钥和私钥。

3>在GitHub账户中添加公钥

  • 登录你的github,头像处下拉框选择settings。
  • 进入设置页后点击侧边栏的SSH and GPG keys按钮。
  • 点击New SSH key,title可以任意填,并且将上一步骤生成的id_rsa.pub的内容复制到这里的key输入框中。

4>确认

$ ssh -T git@github.com

在这里我收到一个提示:

Warning: Permanently added the RSA host key for IP address '192.30.253.113' to the list of known hosts.

直接回车,最后看到这个就说明大功告成:

Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.

遇到的问题
添加完公钥后,使用小乌龟(TortoiseGit)pull代码时报错:

no supported authentication methods aviaible(server sent:publickey)

查了一下,发现是因为TortoiseGit和Git的冲突 我们需要把TortoiseGit设置改正如下。
- 右键TortoiseGit -> Settings -> Network
- 将SSH client指向~\Git\usr\bin\ssh.exe(Git安装路径下)

SSH连接GitHub的步骤如下: 1. 首先,确认你还没有设置SSH。打开终端,输入cd ~./ssh(默认目录)或者其它你设置过的ssh目录位置并回车。如果终端返回No such file or directory,那说明你应该新设置一个SSH。 2. 生成SSH密钥。在终端输入ssh-keygen -t rsa并回车。按两次回车,第一次选择SSH密钥的存储位置,默认位置是/home/\[用户名\]/.ssh/id_rsa;第二次回车时选择passphrase,可以选择留空或者设置一个密码。 3. 确认生成SSH密钥。在终端内重新输入步骤1的指令cd ~/.ssh和ls,确认SSH密钥文件已被生成。 4. 复制SSH密钥。在终端输入cat id_rsa.pub获取SSH公共密钥内容,复制ssh-rsa ... @mail.ericfrenzy.fun。 5. 在GitHub上添加SSH密钥。在设置页面找到SSH and GPG keys,点击New SSH key。在Title处填写一个你能认出的名字,将刚才复制的SSH公共密钥粘贴到下方的文字框内,点击Add SSH key。 6. 测试连接。在终端输入ssh -T git@github.com并回车。输入yes确认连接。如果出现Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.,说明SSH密钥配置成功。 请注意,在使用git clone等命令时,要使用SSH的URL而不是HTTPS的。 以上是连接GitHubSSH步骤。\[2\] #### 引用[.reference_title] - *1* [使用 ssh 连接 Github 代码库超详细教程](https://blog.csdn.net/snsHL9db69ccu1aIKl9r/article/details/101803787)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [在本地配置SSH连接GitHub以及其它服务器(详细图文教程)](https://blog.csdn.net/EricFrenzy/article/details/126904024)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值