转载:https://www.cnblogs.com/chaohacker/p/14525300.html
https://blog.csdn.net/weixin_36057482/article/details/116887951
- 前提说明
- 业务需要,临时的将一台电脑当作git服务器,作为代码仓库
-
使用ssh协议作为客户端和服务端连接的协议
-
确保安装了ssh服务
- 服务端的搭建
设置服务器的权限
修改ssh文件夹权限
chmod 700 ~/.ssh/
修改文件权限
chmod 600 ~/.ssh/authorized_keys
如果没有以上文件,说明没有ssh服务,请安装
修改 sshd_config 配置文件,使得注册公钥的客户端可以直接登录
sudo vim /etc/ssh/sshd_config
修改
PubkeyAuthentication yes
AuthorizedKeysFile ~/.ssh/authorized_keys
重启 sshd服务
sudo service sshd restart
创建git仓库文件
选择一个目录进行创建.git
git init --bare sample.git
注意的是命令是用于创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库只保存git历史提交的版本信息,纯粹是为了共享,所以不让用户直接登录到服务器上去改工作
- 客户端的搭建
客户端因为需要登录 服务端,所有 ssh 的公钥 私钥肯定要有
执行 ssh-keygen -o
一直 Enter 就行
然后就会发现~/.ssh 下面生成了默认的 id_rsa id_rsa.pub
我们要把公钥 id_rsa.pub 给服务端,注册在服务端,之后访问服务端的时候 就不需要输入密码了
两种办法,name 是 服务端的用户名称 server是ip地址
客户端自己进行拷贝,需要客户端知道服务端用户的密码
$ ssh-copy-id -i ~/.ssh/id_rsa.pub name@server
输入密码然后完成
在服务端上操作, 追加到 authorized_keys 中
cat id_rsa.pub >> ~/.ssh/authorized_keys
问题
如果出现
sign_and_send_pubkey: signing failed: agent refused operation
执行 ssh-add ~/.ssh/id_rsa
拉取 git 仓库
两种写法
语法1: ssh://[<username>@]<server>[:<port>]/path/to/repos/myrepo.git
语法2: [<username>@]<server>:/path/to/repos/myrepo.git
/path/to/repos/myrepo.git 是服务器中版本库的绝对路径。若用相对路径则相对于 username 用户的主目录而言。
这里我使用语法2:
git clone vr@192.168.170.57:VoiceData/vr.git