向git服务器添加shh公钥
步骤一,从客户端获得 SSH 公钥
为了使客户端可以向 Git 服务器提供 SSH 公钥,首先要确认客户端拥有公钥。SSH 的密钥存储在 ~/.ssh/ 目录下,下面我们查看一下这里面都有哪些文件:
[user@local ~]$ ls .ssh/
id_rsa id_rsa_osc id_rsa_osc.pub id_rsa.pub known_hosts
[user@local ~]$
上面的 xxx 和 xxx.pub 分别是一个 SSH 私钥和公钥。
这里 id_rsa(私钥) 和 id_rsa.pub(公钥) 是一对儿,而 id_rsa_osc 和 id_rsa_osc.pub 又是一对儿私钥和公钥。由此可见,一个用户是可以拥有多个密钥的,但是这并不影响我们后面对 Git 服务器的配置,使用任何一个公钥都可以。
如果用户没有密钥文件,甚至连 .ssh 目录都没有,那么说明用户还没有创建 SSH 密钥,我们使用 ssh-keygen 命令可以为其生成密钥。

[user@local ~]$ ssh-keygen -t RSA -C "user@126.com"
Generating public/private RSA key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
e1:ec:5c:cd:89:8f:83:a2:aa:5d:8a:7f:93:12:90:f4 user@126.com
The key's randomart image is:
+--[ RSA 2048]----+
| |
| . |
|... . |
|o E o . + . |
| . S o + |
| . o o o |
| .... + o . |
| o.o+. . . |
|oo=+.. |
+-----------------+
[user@local ~]$

-t RSA 参数表示使用 RSA 算法。
-C 参数指定用户的电子邮箱地址。
接下来 ssh-keygen 命令会询问用户密钥文件的存储路径以及密码等,如果不设置密码直接键入回车即可。
密钥文件默认保存在 ~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub,公钥文件内容类似如下:

[user@local ~]$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVzaGljR5OjgA3VUPO/C/0eIBBhcUQ9v2glTmim1iJ2nOmqTg1lBUlgQCwaIw6f9qJk6J+ibypzJifnic90dfsItlPLBaiMd+/KqZmJymsPOsB2+aQhGXwbj3StTkA1S3KCbUFSRYj3M1CwCGBLxLSyG/wKS/wUeVXtkwAHfSfR7jzkcB5ZyZY6ioxHsMvkCA7ORPaw5zE4MJNw0K9o25sCrgC5RyPUIcEvEt4lo7weaifhNwp5Ql21lVHKknyTALXqETeAhkYrSgueH54srszYJ3A4l+JvpFhHWC/0lF+lZaWtD/VKzs9HSvyYKAs+ovGZAfZY+AC7Et+MWLtlsmf user@126.com
[user@local ~]$

至此,从客户端获得密钥的步骤就完成了,接下来需要把公钥发送个 Git 服务器仓库管理员。
步骤二,搭建 Git 服务器(已有 Git 服务器管理用户的可以跳过此步骤)
为了便于管理,需要在系统中建立一个单独的用户来管理所有的 Git 仓库。

[user@local ~]$ sudo adduser git
Adding user `git' ...
Adding new group `git' (1001) ...
Adding new user `git' (1001) with group `git' ...
Creating home directory `/home/git' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for git
Enter the new value, or press ENTER for the default
Full Name []: git
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
[user@local ~]$

我们给这个用户取名为 git。
所有的远程 Git 仓库都可以在这个用户名下建立,所以以后建立新库或者将新用户的 SSH 公钥添加到服务器时,都使用这个用户操作就可以了。
步骤三,建立远程仓库(已有远程仓库的可以跳过此步骤)
切换到新建的 git 帐号,并建立一个空的远程仓库。

[user@local ~]$ su git
Password:
git@Linux:/home/user$ cd ~
git@Linux:~$ mkdir project.git
git@Linux:~$ cd project.git
git@Linux:~/project.git$ git init --bare
Initialized empty Git repository in /home/git/project.git/
git@Linux:~$

建立远程仓库使用 git init 命令,也可以增加 --bare 参数。
写不写 --bare 参数有什么区别呢?
我们知道,一般从远程 clone 下来的仓库会生成一个独立的目录,在这个目录下有当前分支最新版本的文件,同时还有一个 .git 文件夹,与 .git 同级的文件夹称为我们的“工作目录”,我们的修改都在这个目录中进行。而 .git 就是我们 Git 本地仓库的工作目录,我们 add 和 commit 的东西都会被提交到这个目录中。
对 git init 命令添加 --bare 参数就表示初始化 Git 仓库的时候不要创建本地工作目录,所以相当于 .git 文件夹下的所有内容直接创建到当前目录下,而不是被放到 .git 目录下。
在 Git 服务器上建立好仓库以后,用户就可以克隆这个仓库了。等等。。还没配置用户 SSH 公钥呢,这么就让用户去下载,肯定还是要输入密码才行的。
步骤四,在 Git 服务器上为用户配置 SSH 公钥
还是先在 Git 服务器上使用 authorized_keys 文件来管理所有用户的 SSH 公钥。
git@Linux:~$ mkdir .ssh
git@Linux:~$ touch .ssh/authorized_keys
git@Linux:~$ chmod 600 .ssh/authorized_keys
git@Linux:~$
ssh/authorized_keys git@Linux:~$ cat /tmp/id_rsa_user2.pub >> ~/.ssh/authorized_keys git@Linux:~$ cat /tmp/id_rsa_user3.pub >> ~/.ssh/authorized_keys git@Linux:~$
现在 user1、user2 和 user3 就可以通过 SSH 公钥来操作远程 Git 仓库了,快去试试吧。
参考:
向git服务器添加shh公钥的更多相关文章
- 向 Git 服务器添加 SSH 公钥
. . . . . 在网上很少找到文章有提到如何将自己的 Git 远程仓库配置成可以通过 SSH 公钥方式认证的,而几乎清一色都是告诉你怎么通过 web 界面向 GitHub 添加 SSH 公钥.LZ ...
- git系列之---码云gitee 添加SHH公钥
公钥 很多服务器都是需要认证的,SHH 认证是其中的一种:在客户端生成公钥,把生成的公钥添加到服务器,你以后连接服务器的时候就不用每次都输入用户名和密码了:很多git服务器都是用ssh认证方式,你需要 ...
- 利用阿里云搭建私有Git服务器
服务器系统:Centos 6 (查看centos版本命令:lsb_release -a) 客户端系统:Windows 7 一.服务器端安装Git ==通常centos上使用yum源安装的git版本过低 ...
- 搭建通过 ssh 访问的 Git 服务器
一.Git 协议 Git 可以使用四种主要的协议来传输数据:本地传输,ssh 协议,Git 协议和 HTTP 协议. Git 使用的传输协议中最常见的就是 ssh 了.大多数环境已经支持通过 ssh ...
- 在CentOS搭建Git服务器 转
在CentOS搭建Git服务器 来自 :http://www.jianshu.com/p/69ea5ded3ede 前言 我们可以GitHub发布一些开源代码的公共仓库,但对于私密仓库就需要收费了.公 ...
- SSH方式连接Git服务器需要注意的地方
如何安装Git?这个我这里就不再多说了,想要了解的可以自行百度,以下文字是基于本地Git安装OK,且Git服务器可用的情况下,我的Git是GitLab 接下来开始操作 1:首先在本地生成私钥和公钥,这 ...
- Git服务器分类
目录(?)[-] 服务器上的 Git 协议 本地协议 优点 缺点 SSH 协议 优点 缺点 Git 协议 优点 缺点 HTTPS 协议 优点 缺点 在服务器部署 Git 将纯目录转移到服务器 小型安装 ...
- 在阿里云上搭建自己的git服务器
这篇文章我就来介绍一下如何在一台全裸的阿里云主机上搭建自己的git服务器. 1. 安装git 首先安装git,一般而言,现在的服务器已经内置了git安装包,我们只需要执行简单的安装命令即可安装.比如: ...
- 创建SSH keys用于添加到Git服务器上
SSH keys SSH key 可以让你在你的电脑和Git服务器之间建立安全的加密连接.先执行以下语句来判断是否已经存在本地公钥: cat ~/.ssh/id_rsa.pub 如果你看到一长串以 s ...
随机推荐
- web.config中的connectionString里面应该怎么写?
2009-09-16 10:19信欣玛利 | 浏览 6068 次 网络 就是具体格式.. 谁能举个例子? asp.net 3.5的. 2009-09-16 10:40 提问者采纳 这是用来连 ...
- SpringMVC之学习(1)
先来一个springmvc的基本配置,照样输出hello world 1.先导入springmvc所需要的开发包 最起码需要这么多的基本包,然后开始上配置 2.先在web.xml里进行引入,和Stru ...
- javascript父、子页面交互小结
帧用来存放子页面,既可以是iframe,又可以是frameset.window对象是全局对象,页面上的一切函数和对象都在它的作用域里. 1.parent代表父窗口.如果父窗口又存在若干层嵌套, ...
- 关于Unity的坐标系
1.坐标系分为左手坐标系和右手坐标系 2.用手从X轴旋到Y轴画一个弧,如果大拇指所指的方向是Z轴,那么这个坐标系就是这只手的坐标系 3.Unity是左手坐标系,OpenGl是右手坐标系 Unity坐标 ...
- 浅谈Unity中的GC以及优化
介绍: 在游戏运行的时候,数据主要存储在内存中,当游戏的数据不在需要的时候,存储当前数据的内存就可以被回收再次使用.内存垃圾是指当前废弃数据所占用的内存,垃圾回收(GC)是指将废弃的内存重新回收再次使 ...
- 曲线学习PyQt5方案一
PyQt5官方网站没直接给出API,这个很操蛋啊. PtQt4官方网站有完整的API,C++版本的Qt5也能找到完整的API资料.由于Qt5的C++和Python3的类和函数实现应该是一致的,所以可以 ...
- jQuery实用技巧必备
本文实例总结了经典且实用的jQuery代码开发技巧.分享给大家供大家参考.具体如下: 1. 禁止右键点击 $(document).ready(function(){ $(document).bind ...
- 如何在ChemDraw中打出符号π
很多人日常使用ChemDraw是一款非常优秀的化学绘图软件,在其绘制化学结构式或者反应式的过程中,常常需要添加各种符号.比如有的用户会需要输入希腊字符π,但是不知道用什么方法添加.本教程就来给大家介绍 ...
- 获取软件的apk包名、查看手机设备名称等
获取软件的apk包名 1.下载aapt,这里使用的是SDK自带的aapt,找到SDK路径下面的aapt.exe,本机路径:E:\downloads\android-sdk_r23.0.2-window ...
- 用原生Canvas写贪吃蛇及问题解决
为了学习Canvas,写了这个小游戏贪吃蛇供自己和大家学习 Github: https://github.com/zhiyishou/Gsnake Play On: http://zhiyishou. ...