一、安装Githtml
见 Jenkins持续集成环境部署 第四节git
二、建立Git用户和用户组shell
1 groupadd git 2 useradd git -g git
三、建立证书
切换到git用户建立证书windows
1 su git 2 cd /home/git 3 mkdir .ssh 4 chmod 700 .ssh 5 touch .ssh/authorized_keys 6 chmod 600 .ssh/authorized_keys
注意:.ssh的权限必须是700,authorized_keys的权限必须是600安全
生成公钥和私钥文件bash
1 $ cd .ssh 2 $ ssh-keygen -t rsa
首先会让你输入要保存公钥的位置,直接回车便可,接着会提示让你重复一个密码两次,若是不想再使用公钥的时候输入密码,直接回车便可。完成后会在home目录下的.ssh目录中生成两个文件id_rsa(私有密钥)和id_rsa.pub(公钥)。服务器
四、初始化Git仓库ssh
首先,咱们选定一个目录做为Git仓库,假定是/home/gitdeport/runoob.git分布式
1 $ cd /home 2 $ mkdir gitdeport 3 $ chown git:git gitdeport 4 $ cd gitdeport 5 $ git init --bare runoob.git 6 Initialized empty Git repository in /home/gitdeport/runoob.git/
以上命令Git建立一个空仓库,服务器上的Git仓库一般都以.git结尾。而后,把仓库所属用户改成git:post
1 $ chown -R git:git runoob.git
五、在客户端安装git
先安装git,再安装TortoiseGit,安装好后打开Git Bash:
六、设置用户名、邮箱
Git是分布式版本控制系统,因此须要填写用户名和邮箱做为一个标识。每个 Git 的提交都会使用这些信息,而且它会写入到你的每一次提交中,不可更改。若是使用了 --global 选项,那么该命令只须要运行一次,由于以后不管你在该系统上作任何事情, Git 都会使用那些信息。 当你想针对特定项目使用不一样的用户名称与邮件地址时,能够在那个项目目录下运行没有 --global 选项的命令来配置。
若是想要检查你的配置,可使用 git config --list 命令来列出全部 Git 当时能找到的配置,以下图:
七、将Windows客户端和Linux服务端关联起来
想要将客户端和服务端链接的话要建立证书登陆
打开windows的git bash,输入ssh-keygen -t rsa -C “邮箱”,生成ssh私钥和公钥,以下图:
此时,C:\Users\用户名.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub。id_rsa 是私钥,id_rsa.pub是公钥。
收集全部须要登陆的用户的公钥,公钥位于id_rsa.pub文件中,把咱们的公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
服务端Git打开RSA认证
进入 /etc/ssh 目录,编辑 sshd_config,打开如下三个配置的注释:
保存后重启sshd服务:
将客户端公钥加到服务器
将客户端公钥id_rsa.pub文件的内容写到服务器端 /home/git/.ssh/authorized_keys 文件里
注:以上密钥只适用于使用Git Bash进行命令管理git的,即clone、push、pull等相关操做在Git Bash才不用输入密码,而若是使用TortoiseGit 可视化界面,仍然要输入密码。
八、在客户端clone远程仓库
将服务器上的/home/gitdeport/runoob.git库克隆到本地 git clone 用户名@服务器地址:仓库路径,以下图:
形成上面报错的缘由是Linux服务器上git的安装路径是/usr/local/git,不是默认路径,根据提示,在git服务器192.168.182.130上, 创建连接文件:
1 ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
再次执行clone命令成功,以下图:
这个过程有一点要千万注意:.ssh的权限必须是700,authorized_keys的权限必须是600
九、禁用git用户的shell登陆
出于安全考虑,建立的git用户不容许登陆shell,能够经过编辑/etc/passed文件完成,找到相似下面这一行:
1 git:x:501:502::/home/git:/bin/bash
改成:
1 git:x:501:502::/home/git:/usr/bin/git-shell
这样,git用户能够正常经过ssh使用git,但没法登陆shell,由于咱们为git用户指定的git-shell每次一登陆就自动退出。
TortoiseGit 无需输入密码方法
一、打开puttygen
二、生成公钥和私钥
点击save private key保存putty的私钥,putty的密钥的后缀名是ppk。 把公钥添加到.ssh/authorized_keys
注意:
公钥在authorized_keys的文件形式是一行一个公钥,不然该公钥不起做用。
三、在tortoisegit上使用密钥
这样就OK了!!
使用TortoiseGit将文件提交至git服务器
提交失败,报错了,缘由是:Linux服务器上git的安装路径是/usr/local/git,不是默认路径。
根据提示,在git服务器192.168.182.130上, 创建连接文件:
1 ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
再次提交成功,以下图: