如何在服务器上搭建自己的Git仓库,且进行无密连接
建立仓库
1、创建一个新的用户(root)
1) 添加新用户
useradd XXX
2) 添加密码
passwd XXX
3) 切换到创建的用户
su - XXX
注意:如果是非root用户,可跳过上一步
2、创建Git仓库
1)创建一个裸仓(无法直接在仓库查看内容,无法直接在本仓库中使用git命令,只保存提交的版本信息,但是可克隆,避免了不必要的冲突)
git init --bare project.git
2)尝试在本地克隆一下这个裸仓
git clone XXX(仓库所在的远程用户)@39.97.151.XX(自己的服务器IP):~/project(仓库名)
此时需要输入密码,也就是远程用户的密码,下面说一下如何无需密码克隆
免密克隆/登录
其实准确的来说,无密克隆是用到了ssh远程登录,登录用户无需密码,这样克隆当然也不需要了
1、修改远程ssh配置
1) 打开配置文件sshd
vi /etc/ssh/sshd_config
2) 修改配置,将以下几个配置改为yes,在vi中退出编译模式(Esc退出编译模式,i进入编译模式)后使用 / 可进行查询
例如: /name 查找name,n 为下一个 ,N 为上一个
RSAAuthentication yes # 启用RSA 非对称加密算法
PubkeyAuthentication yes # 公钥认证
PasswordAuthentication yes #允许密码认证
如果在配置文件中找不到,自己添加即可
修改完成后重启服务 : systemctl restart sshd.service
2、在远程用户目录中添加.ssh文件夹
注意:.ssh文件夹是用户的下级,而不是在Git仓库的下级,.ssh文件的所有权必须是此用户,而不能是root,简单来说就是要登录此用户后创建,因为以后登录都要用到此文件夹
1) 创建.ssh文件夹
mkdir .ssh
2) 在.ssh文件夹中创建 authorized_keys 文件,此文件用于存储本地的公钥
touch .ssh/authorized_keys
3) 修改文件权限.ssh为可读可写可执行,authorized_keys只可读可写
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
3、本地查找自己的密钥
在本地 C:\用户\自己的用户 下,有一个.ssh隐藏文件,若不存在,则新建一个.ssh文件,在.ssh中进入命令提示符(小黑框)
1) 生成密钥,第一个输入为密钥名称,第二个为密钥密码(密钥密码建议为空,即什么也不输)
ssh-keygen
2) 上一步会生成两个文件,其中一个以.pub结尾为公钥,另一个为私钥,其中公钥复制到服务器,连接时用私钥连接
打开公钥,复制里面所有内容
3)登录服务器的用户,将复制的内容粘贴到用户的.ssh 文件夹下的 authorized_keys 中(使用vim打开, :x 保存并退出)
4) win + R 输 cmd 打开命令提示符(小黑框),尝试无秘连接
ssh user(远程服务器用户名)@39.97.154.XX(服务器IP) -i C:\Users\XXX\.ssh\my_rsa(对应私钥的绝对地址)
5) 若连接成功,打开本地 .ssh 文件夹下的 config (若无,自己在.ssh中创建)
6) 编辑config
Host XXX(连接时的名称)
HostName 39.97.154.XX (服务器IP)
User XXX (服务器用户名)
Port 22 (端口号)
PreferredAuthentications publickey (必填)
IdentityFile C:\Users\XX\.ssh\XXX (私钥绝对地址)
配置好以后保存,在命令行(小黑框)使用ssh进行连接测试
ssh user(远程用户名)@XXX(刚才config配置的Host对应的名称)
若成功,使用Git克隆就可无密啦。若失败的话建议查看一下服务器的开放端口,在这里就不多介绍
7) 无密克隆命令
git clone XXX(用户名)@XXX(刚才config配置的Host对应的名称):~/XX(仓库名)