向git服务器添加shh公钥

步骤一,从客户端获得 SSH 公钥

为了使客户端可以向 Git 服务器提供 SSH 公钥,首先要确认客户端拥有公钥。SSH 的密钥存储在 ~/.ssh/ 目录下,下面我们查看一下这里面都有哪些文件:

[[email protected] ~]$ ls .ssh/
id_rsa  id_rsa_osc  id_rsa_osc.pub  id_rsa.pub  known_hosts
[[email protected] ~]$ 

上面的 xxx 和 xxx.pub 分别是一个 SSH 私钥和公钥。

这里 id_rsa(私钥) 和 id_rsa.pub(公钥) 是一对儿,而 id_rsa_osc 和 id_rsa_osc.pub 又是一对儿私钥和公钥。由此可见,一个用户是可以拥有多个密钥的,但是这并不影响我们后面对 Git 服务器的配置,使用任何一个公钥都可以。

如果用户没有密钥文件,甚至连 .ssh 目录都没有,那么说明用户还没有创建 SSH 密钥,我们使用 ssh-keygen 命令可以为其生成密钥。

[[email protected] ~]$ ssh-keygen -t RSA -C "[email protected]"
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 [email protected]
The key‘s randomart image is:
+--[ RSA 2048]----+
|                 |
| .               |
|...     .        |
|o  E   o . + .   |
| .      S o +    |
|  .    o o o     |
|   .... + o .    |
| o.o+. .   .     |
|oo=+..           |
+-----------------+
[[email protected] ~]$ 

-t RSA 参数表示使用 RSA 算法。

-C 参数指定用户的电子邮箱地址。

接下来 ssh-keygen 命令会询问用户密钥文件的存储路径以及密码等,如果不设置密码直接键入回车即可。

密钥文件默认保存在 ~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub,公钥文件内容类似如下:

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

至此,从客户端获得密钥的步骤就完成了,接下来需要把公钥发送个 Git 服务器仓库管理员。

步骤二,搭建 Git 服务器(已有 Git 服务器管理用户的可以跳过此步骤)

为了便于管理,需要在系统中建立一个单独的用户来管理所有的 Git 仓库。

[[email protected] ~]$ 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
[[email protected] ~]$

我们给这个用户取名为 git。

所有的远程 Git 仓库都可以在这个用户名下建立,所以以后建立新库或者将新用户的 SSH 公钥添加到服务器时,都使用这个用户操作就可以了。

步骤三,建立远程仓库(已有远程仓库的可以跳过此步骤)

切换到新建的 git 帐号,并建立一个空的远程仓库。

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

建立远程仓库使用 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 公钥。

[email protected]:~$ mkdir .ssh
[email protected]:~$ touch .ssh/authorized_keys
g[email protected]:~$ chmod 600 .ssh/authorized_keys
[email protected]:~$

ssh/authorized_keys [email protected]:~$ cat /tmp/id_rsa_user2.pub >> ~/.ssh/authorized_keys [email protected]:~$ cat /tmp/id_rsa_user3.pub >> ~/.ssh/authorized_keys [email protected]:~$

现在 user1、user2 和 user3 就可以通过 SSH 公钥来操作远程 Git 仓库了,快去试试吧。

参考:

服务器上的 Git - 生成 SSH 公钥

服务器上的 Git - 配置服务器

时间: 2024-08-07 21:20:25

向git服务器添加shh公钥的相关文章

在CentOS搭建Git服务器 转

在CentOS搭建Git服务器 来自 :http://www.jianshu.com/p/69ea5ded3ede 前言 我们可以GitHub发布一些开源代码的公共仓库,但对于私密仓库就需要收费了.公司内部通常会搭建自己的Git服务器,我也通过在自己的服务器上搭建练习一下. 开始前先说一下服务器信息,这里是阿里云的CentOS 6.5 64位操作系统. 一 确认服务器是否安装Git [[email protected] git]# rpm -qa gitgit-1.7.1-3.el6_4.1.x

搭建通过 ssh 访问的 Git 服务器

一.Git - 协议 Git 可以使用四种主要的协议来传输数据:本地传输,ssh 协议,Git 协议和 HTTP 协议. Git 使用的传输协议中最常见的就是 ssh 了.大多数环境已经支持通过 ssh 对服务器的访问 ,ssh 也是唯一一个同时支持读写操作的网络协议.另外两个网络协议(HTTP 和 Git)通常都是只读的.ssh 同时也是一个验证授权的网络协议:而因为其普遍性,一般架设和使用都很容易. 本文主要介绍如何搭建 ssh 协议的 Git 服务器. 二.在服务器上部署 Git 首先,你

创建SSH keys用于添加到Git服务器上

SSH keys SSH key 可以让你在你的电脑和Git服务器之间建立安全的加密连接.先执行以下语句来判断是否已经存在本地公钥: cat ~/.ssh/id_rsa.pub 如果你看到一长串以 ssh-rsa或 ssh-dsa开头的字符串, 你可以跳过 ssh-keygen的步骤. 提示: 最好的情况是一个密码对应一个ssh key,但是那不是必须的.你完全可以跳过创建密码这个步骤.请记住设置的密码并不能被修改或获取. 你可以按如下命令来生成ssh key: ssh-keygen -t rs

git服务器gitlab之搭建和使用

git服务器比较有名的是gitosis和gitolite,这两个管理和使用起来稍微有些复杂,没有web页面,而gitlab则是类似于github的一个工具,github无法免费建立私有仓库,并且为了代码安全,于是在内网安装了一个自己实验室的一个git服务器,多方比较,选择了gitlab,gitlab有很多依赖,而bitnami制作了一键安装的包,下载链接:https://bitnami.com/redirect/to/37478/bitnami-gitlab-7.0.0-0-linux-inst

centos 环境搭建git 服务器

首先yum安装git yum install git 查看git的版本 sudo git --version 服务器端创建一个git 用户,专门来处理git服务,并为git用户设置密码 查看是否有git的用户 id git 添加git用户 useradd git 为git用户分配密码 passwd git 创建git仓库 sudo mkdir -p /home/git/project.git git初始化仓库 sudo git init --bare /home/git/project.git

linux搭建git服务器

服务端配置 1.安装git 2.新建一个用户,只能用来上传代码,而不能通过ssh登录,比如git用户 adduser git chsh -s $(command -v git-shell) git 使用git-shell替换bash ,这样git用户就不能通过ssh登录 这一步会有警告,提示git-shell不在shell列表里,不用担心. 3.添加ssh公钥,在/home/git/.ssh/authorized_keys里添加客户端的公钥,一行一个. 如果没有文件,可以新建 mkdir /ho

git服务器搭建post-receive 钩子部署服务端代码

一.git服务器搭建(服务器用户:root) 安装git $ apt-get install git 创建git用户 $ adduser git$ passwd git //修改git用户密码 创建git仓库 $ cd /home$ mkdir git$ mkdir ./git/.ssh$ touch./git/.ssh/authorized_keys$ cd /home/git$ git init --bare test.git //初始化仓库$ chown -R git:git ../git

CentOS 6.4 搭建git 服务器

CentOS 6.4 搭建git 服务器 (2013-11-22 19:04:09)转载▼ 标签: it 分类: Linux 此文件是依据markdown所编写,更好效果参见本人github的文档https://github.com/jackliu2013/recipes/blob/master/doc/linux/CentOS_6.4_git服务器搭建.md ##CentOS安装Git服务器 Centos 6.4 + Git 1.8.2.2 + gitosis## 1.查看Linux系统服务器

版本控制——Git 使用笔记,以及Windows搭建Git服务器

Git和Github的关系 链接:http://www.zhihu.com/question/21907548/answer/95284202 来源:知乎 Git是一款免费.开源的分布式版本控制系统 Github是用Git做版本控制的代码托管平台 相当于本地.公司服务器.Github网站服务器都装Git做版本控制,只不过Github的服务器强大些,对全球用户托管的项目用Git做版本控制! 正是由于Github用Git做版本控制,所以可以轻松的记录项目的变迁史,然后有了下图 git是一张弓,git