git服务器端:环境是Centos 7.5,Git是 1.8.3.1(端口默认为9418)
git客户端:windows7,Git
1.验证系统是否有git,没有则安装
git --version验证,没有则yum -y install git
用rpm -qa | grep git可查看git安装的软件包
2.验证是否有git用户,没有则添加
id git验证,没有则useradd git和添加密码passwd git,输2次git即可
3.创建git服务端版本仓库
这里我选用目录为/var/data/git/learngit.git
A:创建目录:mkdir -p /var/data/git/learngit.git
B:初始化库:git init --bare /var/data/git/learngit.git
C: Git 仓库的 owner 修改为 git用户:cd /var/data/git和 chown -R git:git learngit.git/
4.客户端下载远程仓库
windows系统上我选用目录/d/IdeaProjects/(d为D盘)为操作目录
启动客户端 Git Bash.exe,然后进入该目录执行远程clone操作,如下命令
git clone git@192.168.3.10:/var/data/git/learngit.git
第一次远程连接会提示如下内容,输入yes即可
The authenticity of host ‘192.168.3.10 (192.168.3.10)‘ can‘t be established.
ECDSA key fingerprint is SHA256:HEaAUZgd3tQkEuwzyVdpGowlI6YKeQDfTBS6vVkY6Zc.
Are you sure you want to continue connecting (yes/no)?
提示输入密码时输入服务器端的git的密码git即可
然后该目录下会出现一个名为learngit的文件夹,它就是本地仓库(和learngit.git对应),进入该目录执行vi test.txt命令,输入内容,然后git add test.txt和git commit -m "add test.txt"是添加进本地仓库,执行git push -u origin master(-u是第一次远程添加加上,后续不用加了就,origin是默认的远程库名称,master是当前主分支,开始默认这一个,可自行添加)即可推送到远程仓库中 。
Git还可以把本地的公钥添加到Git服务器,就可以免去每次远程操作都输入密码了
5.生成公私钥,添加到服务器
以下是客户端创建ssh私钥和拷贝的过程,如果您有私钥越过创建私钥的过程。
第一步:创建客户端的ssh私钥和公钥
检查是否已经拥有ssh公钥和私钥:进入用户的主目录。
用户主目录:
Windows系统:C:\Users\用户名(我用的是这个)
Linux系统:/home/用户名
Mac系统:/Users/用户名
然后查看是否有.ssh
文件夹,此文件夹下是否有如下几个文件
如果没有,那么用ssh-keygen创建ssh的私钥。
创建公私钥 ssh-keygen -t rsa -C "youremail@example.com"
-t rsa表示密钥类型是rsa,-C选项用于添加comment,可以设置成自己的Email地址
提示passphrase时不需要设置,三次回车就行。
第二部:公钥添加到服务器中
A:首先在服务中做些设置,vi /etc/ssh/sshd_config文件做如下修改
开启RSA认证,将前面的
#去掉,并确保如下配置:
RSAAuthentication yes #这个没配置也可以,不行的话你记加上
PubkeyAuthentication
yes #这个把前面#注释去掉就行
AuthorizedKeysFile .
ssh
/authorized_keys #这个默认打开的
修改保存完后重启服务
service sshd restart(如果不行可执行systemctl restart sshd)
B:然后cd /home/git目录下,创建.ssh文件夹mkdir .ssh,再创建authorized_keys文件(与上面对应)touch authorized_keys
C:接下来windows系统中进入客户端 Git Bash.exe,把刚才创建的公钥id_rsa.pub远程复制到/home/git/.ssh/目录下
命令:scp /c/Users/win7/.ssh/id_rsa.pub root@192.168.3.10:/home/git/.ssh/
输入密码行了
D:最后回到服务端进入/home/git/.ssh/目录下
执行:cat id_rsa.pub >> authorized_keys就会复制成功。(其实手动复制也可以,但是不推荐,容易出错)
现在再在客户端
Git Bash.exe做克隆推送等操作就不用密码了
6.禁用git用户的shell登录
出于安全考虑,第2步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
1 |
|
最后一个冒号后改为:
1 |
|
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
另外想详细学习Git命令可以去廖雪峰网站学习很详细
参考http://www.mamicode.com/info-detail-1833427.html