Git通过 SSH 连接代码仓库

fdIlme

Git通过 SSH 连接代码托管服务器github/gitee/内部私服 gitlab

一直以来,本地都是通过HTTPS协议直接 clone 代码,进行 pull/push 操作,今天尝试一下 #ssh# 方式,其实 ssh 不止能用来链接 github,也能用来连接服务器。

1、git 远程连接四种协议

咱们先了解一下 git四种协议

序号协议优点缺点
1本地协议搭建简单,基于现有的文件权限和网络访问权限,适用于团队已经有共享文件系统。
$ git clone /opt/git/project.git
通常共享文件系统比较难配置,并且比起基本的网络连接访问,这不方便从多个位置访问。 如果你想从家里推送内容,必须先挂载一个远程磁盘,相比网络连接的访问方式,配置不方便,速度也慢。
2HTTP/S协议不同的访问方式只需要一个 URL 以及服务器只在需要授权时提示输入授权信息,这两个简便性让终端用户使用 Git 变得非常简单。 相比 SSH 协议,可以使用用户名/密码授权是一个很大的优势,这样用户就不必须在使用 Git 之前先在本地生成 SSH 密钥对再把公钥上传到服务器。 对非资深的使用者,或者系统上缺少 SSH 相关程序的使用者,HTTP 协议的可用性是主要的优势。 与 SSH 协议类似,HTTP 协议也非常快和高效。
另一个好处是 HTTP/S 协议被广泛使用,一般的企业防火墙都会允许这些端口的数据通过。
总结:一般开通443端口,通过账号密码连接,可用性比较高。
$ git clone https://example.com/gitproject.git
使用时总是频繁要输入密码,但是现代操作系统比较智能,可以帮助记录密码,如windows系统下凭证管理器、OSX 系统下 #Keychain#
3SSH 协议1.架设简单;2.数据传输时是安全的(所有数据传输时都经过授权和加密);3.高效,和其他3种协议一样,在传输数据时也会尽量压缩数据。
$ git clone ssh://user@server/project.git //使用ssh协议clone一个仓库

您可以使用 Secure Shell Protocol (SSH) 连接到 GitHub ,该协议通过不安全的网络提供安全通道。
不能通过它实现匿名访问。即使使用者只需要读取数据,使用者也要有通过SSH访问你主机的权限,不利于开源项目
4git协议目前是Git所使用的协议里面最快的。如果你的项目不需要为写进行用户授权,可以使用Git协议。1.缺乏授权机制,一旦放开推送操作,意味着网络上的任何人都能向你的项目推送代码;2.架设难,需要特殊的端口9481,大型企业防火墙一般会封锁不参加端口

总结,目前常用的是 HTTP/S协议和 SSH 协议。

2、使用 SSH 协议

环境:Mac,终端是 iTerm,以 github为例

  1. 设置 本地 git 的 全局username和 useremail,此步骤非必须

检查是否已设置:git config --list,按 :q 推出

usCNef

设置username/useremail

git config --global user.name 'yourname' 
git config --global user.email 'youremail'
  1. 生成Github SSH key

检查是否已经生成了,默认的文件名是 id_*。

cd ~/.ssh
ll

Jo3eah

为了方便多帐号管理,我用其他具体的名字代替

ssh-keygen -t rsa -C '你的github邮箱'

iFr7U8

如上图,我已经生成了 github 的 ssh key。

  1. 将 SSH 公钥复制到剪贴板
pbcopy < ~/.ssh/github.pub
  1. 上传 ssh pub

登录 github,依次点击,头像->Setting->SSH and GPG keys->new

hSQNUH

将复制的 pub key粘贴进去,保存,输入 github 密码确认即可

lPhX6m

ycIYHN

  1. 测试

ssh -T git@github.com

ollcBq

  1. 再用以下命令分别生成 gitee 和 gitcode的密钥

上传公钥的方式类似,不再赘述。

ssh-keygen -t rsa -f ~/.ssh/id_rsa_gitee -C "你的 gittee 邮箱"
ssh-keygen -t rsa -f ~/.ssh/id_rsa_gitcode -C "你的 gitcode邮箱"
  1. 增加文件config,文件内容
#gitee
Host gitee.com
HostName gitee.com
User 改成你的gitee邮箱
IdentityFile ~/.ssh/id_rsa_gitee

#gitcode
Host gitcode.net
HostName gitcode.net
User  改成你的 gitcode 邮箱
IdentityFile ~/.ssh/id_rsa_gitcode

我的~/.ssh目录如下:

GP5OVL

整体测试一下

ssh -T git@github.com
ssh -T git@gitee.com
ssh -T git@gitcode.net

soDKMX

3、操作仓库-命令行方式

fes.js 为例,克隆/下载,选择 ssh方式,并复制地址

Yh6H29

运行命令 git clone git@gitee.com:WeBank/fes.js.git完成 clone

7KK7KS

push/pull 也一样。

4、利用可视化工具,如 Tower/SourceTree,也是很简单

0Iuuza

9Nb1pK

5、常见问题

Q1:无法链接怎么办

A1:用命令 ssh -v git@gitee.com进行调试,找出问题。

ksFpOZ


Q2:如何删除 ssh host

A2:通过命令 ssh-keygen -R github.com


Q3:旧仓库用的 https 协议,需要重新 clone 嘛?

A3:不需要,修改 remote 仓库地址就行 git remote set-url origin <url>


标  题:Git通过 SSH 连接代码仓库
作  者:bugless
出  处:http://bugless.site
创建时间:2022-04-13 21:26:52
关于博主:坐标广州,喜欢折腾各种东西的工程师,如有问题探讨可以直接下方留言。
声援博主:如果您觉得文章对您有帮助,可以评论、订阅、收藏。您的鼓励是博主的最大动力!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值