背景介绍:
本地客户端电脑是windows 10系统(64位),服务器是申请的亚马逊AWS免费版,服务器的系统是ubuntu 16.04。
为了将自己电脑(本地客户端)上写的代码上传到服务器上,需要在客户端、服务器上都装上Git,同时进行设置。
详情如下:
1.在服务器端安装git
(1)连接服务器,并输入命令 sudo apt-get install git ,即安装好git
(2)为了安全,新建一个专门部署代码的无特权用户。
输入命令 useradd -m git
需设置密码,之后还会提示输入一些其他信息,不用理会,直接enter就可以了。
【注意,有人建议禁用用户git的shell权限,即不能通过命令进入git用户,也无法用账户名和密码连接git。
禁用的方法是,输入命令:vim /etc/passwd
即打开文件passwd,将其中的
git:x:1001:1001::/home/git:/bin/bash
替换成
git:x:1001:1001::/home/git:/usr/bin/git-shell。
本文的方法,不能禁用用户git的shell权限,即无需替换】
(3)新建一个文件夹作为接收代码的仓库
依次输入命令:
cd /home
mkdir git_repository
即切换到home文件夹,然后新建一个文件夹git_repository
(4)把文件夹git_repository所有者和所在用户组都改成git用户,输入:
chown git:git git_repository
(5)切换到文件夹git_repository,初始化为git仓库,依次输入:
cd /home/git_repository
git init
然后,让仓库接收代码提交:
git config receive.denyCurrentBranch ignore
(6)在/home/git下创建.ssh文件夹,并在.ssh下创建authorized_keys文件【很重要,后面有用】
分别输入如下命令即可:
cd /home/git/
mkdir .ssh 【创建文件夹用mkdir】
cd /home/git/.ssh/
touch authorized_keys 【创建文件用touch】
注意,如果无效查看/etc/ssh/sshd_config文件一行:(AuthorizedKeysFile %h/.ssh/authorized_keys)有没有被注释掉,重启ssh服务(命令为service ssh restart)
2.在客户端安装git
(1)因为自己的电脑(也就是客户端)是windows 10 系统,所以直接在git的官网下载对应的源程序,双击安装,一直点确定即可。
安装成功后,电脑上回多出来如下界面:
(2)打开上图的Git GUI,点击“Created New Repository”在客户端某个文件夹上创建客户端上的.git仓库。
然后,打开上图的Git Bash,它可以使用命令来配置本地的Git。
首先,配置本地的git用户名和邮箱(git是通过用户名和邮箱作为登录方式的),命令分别如下两行:
git config --global user.name “用户名”
git config --global user.email “邮箱”
(3)在自己的电脑上生成git密钥(密钥有公钥id_rsa.pub和私钥id_rsa,用来作为和远程服务器连接的验证)
在Git Bash中输入如下命令:
ssh-keygen -t rsa
并按回车三下,(是因为有提示你是否需要设置密码,如果设置了每次使用git都会用到密码,一般不设置,直接回车)。
运行结果如下图,红框中的地址就是公钥和私钥的存储地址。
(可以用命令 cat ~/.ssh/id_rsa.pub查看公钥的内容)
(4)将自己电脑上的公钥id_rsa.pub上传到服务器上,仍然需要在Git Bash中输入命令,如下:
cat ~/.ssh/id_rsa.pub | ssh root@服务器的IP地址 "cat >> /home/git/.ssh/authorized_keys"
(上面命令的大概意思是将本地的公钥上传到服务器,并写入在1.6部创建的文件中。其中,root为服务器的用户名,命令确定后需输入root的密码。完成后,可在服务器上输入 vi/home/git/.ssh/authorized_keys,查看里面的内容是否和id_rsa.pub一样,如一样,即上传成功)
【注意:上面的命令运行时,如出现错误 Permission denied (publickey)时的解决办法,如下:
在服务器上,输入命令:
sudo vi /etc/ssh/sshd_config
找到:PermitRootLogin prohibit-password禁用
添加:PermitRootLogin yes
退出并保存。
再输入命令,sudo service ssh restart】
(5)打开Git GUI,点击Remote--Add,出现如下界面,Name对应的框中随意输入一个名字,
Location对应的框中输入 git@***.***.***.***:/home/git_repository/.git
@前面的git就是第1.2步在服务器创建的用户git,***.***.***.***是服务器的IP地址,后面的为第1.5步在服务器上建立的git仓库。
点击上图中的add按钮,成功后的界面如下图:
这样,就成功建立了客户端git与服务器git之间的联系。
【注意,如在第1.2步中修改了 git:x:1001:1001::/home/git:/bin/bash 为 git:x:1001:1001::/home/git:/usr/bin/git-shell,会有连接错误。】