1. 前言

Git 已经成为我们开发最流行的版本控制工具了,Git 支持多种传输协议,其中最常用的就是https 和 ssh,平常我们用https 比较多,这种方式 pull 和push 代码都要输入账户密码,非常不方便。那么有没有更加方便而且安全的方式呢?当然有!ssh 方式可以做到这一点。

2. Git 中的 ssh

公有 Git 服务诸如GitHubGiteeCodingGitlab等都提供了 ssh 功能。通过 GitlabGogsGitea 搭建的私有 Git 服务也都有 ssh 功能。一般我们都可以在对应的设置 中找到。以 Gitee 为例:

那么如何生成 ssh 公钥呢?

3. ssh 公钥的生成

ssh 生成公钥的算法有很多种,我们通常使用 RSA 算法来生成密钥对。确保你在不同操作系统的用户目录 ~/.ssh 下没有 id_rsa 和 id_rsa.pub ,如果有就说明你已经生成了无需再生成。针对 Linux\Mac 和Windows 和我们来走一下流程。

3.1 Linux\Mac 为例

命令行执行:

ssh-keygen -t rsa -b 4096 -C "替换为常用email地址"

后面让你输入密码你可以输入一个,或者一路 enter 按到底直接生成。生成完毕后执行以下命令查看公钥:

 cat ~/.ssh/id_rsa.pub

切记一定要带 .pub 后缀,否则则为私钥。然后出现以 ssh-rsa 开头的字符串就是公钥:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDDBYgnpCY9j/xhhZO4ryy7YrJRRUXydbVUyi8dSfyn5obFD0iJhqPCF1jk5LZuryhsmy
…………………(此处省略)
mH1eqd4SMXO8fJoaM7JOWYSs/xgRK9bw== dax@felord.cn

3.2 Windows 下生成 ssh

如果你本地安装有 Git Bash 方法可以按照上面去模仿即可。Bash 可以去你Git 安装目录找,它也是一种 Shell操作界面。然后可以按照 3.1 的方法生成。Window10 某个更新以后开始内置了ssh 服务。以管理员身份打开命令行输入ssh 如果出现了提示命令说明你已经开启了 ssh 服务。如果没有则需要你手动开启。在 应用和功能 选项中搜索openssh 选择客户端或者服务器都可以:

安装后需要重启,重启后打开命令行,输入 ssh 进行检查即可。然后就可以按照3.1 的方式生成公钥了。

附 Win 下开启/关闭 ssh 命令:

net start sshd
net stop sshd

4. 配置

我们生成了密钥对之后将 id_rsa.pub所有内容复制并填写到 公钥 一栏中配置好我们生成的公钥,Git 服务端就认可我们当前的主机了。我们就能以 git@ hostname:user/project.git 的形式进行无密码访问远程 Git 仓库了。


©著作权归作者所有:来自51CTO博客作者mob604756f80175的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 驰骋工作流引擎设计系列02 流程实例的生成设计
  2. 0429作业
  3. php之数组键名更换,快速生成数组与数组过滤
  4. 你还在手撕微服务?快试试 go-zero 的微服务自动生成
  5. 整合SSM框架应用
  6. 冷月手撕408之操作系统(23)-输入输出管理IO的控制方式
  7. [记录点滴] 一个解决Lua 随机数生成问题的办法
  8. [源码分析]从"UDF不应有状态" 切入来剖析Flink SQL代码生成 (修
  9. 从"UDF不应有状态" 切入来剖析Flink SQL代码生成

随机推荐

  1. mysql在一个表上进行多个分组
  2. 如何在Ruby on Rails中创建tinyint(2)或tin
  3. 一些值得收藏的MySQL知识链接
  4. mysql编译安装后各种常见错误集锦
  5. 基础概念---mysql 列转行,合并字段
  6. 按平均值优化sql结果集
  7. MySQL数据库离线包安装与注册
  8. 如何使用基于条件的PHP来改变CSS属性?
  9. 如何从mysql表中删除具有相同列值的行?
  10. Linux下使用C/C++访问数据库——SQL Serv