纯用SSH管理GIT服务器


gitosis等管理git服务器有点小复杂,一般小规模开发没必要用,仅仅依靠Linux的SSH就可以管理了。步骤如下


1 添加用户,并准备公钥私钥

添加用户git,密码也是git

adduser danny
passwd danny
adduser git
passwd git

root用产生公钥在/root/.ssh/id_rsa下面

ssh-keygen -t rsa

然后分别su danny / su git,同样执行

ssh-keygen -t rsa  

回到root下执行

cp /home/danny/.ssh/id_rsa.pub /home/git/.ssh/danny_rsa.pub

cd /home/git/.ssh/

cat danny_rsa.pub >> authorized_keys

cat authorized_keys

rm -rf danny_rsa.pub

chown git authorized_keys

mkdir /home/git/repos

chown -R git /home/git/repos

2 建立测试项目

切换到git用户,进入git主目录,建立testproject

su git

cd ~

mkdir /home/git/repos/testproject

cd /home/git/repos/testproject

初始化git库
git init

设置用户
git config user.email "git@ujs.edu.cn"
git config user.name "git"


在该目录下建立一个test文件,并提交。
vi test

git add test

git add --all 添加所有待添加文件

git commit -a -m "add test by git"

此时就建立了基础代码库。

创建分支,初始默认为master分支。注意:服务端当前所在分支不允许其他用户提交。

git branch develop
查看分支
git branch
切换分支
git checkout develop

这里我们只允许其它用户把修改提交到develop分支上,然后由管理员维护master分支,所以我们切回master分支。

git checkout master

3 克隆测试项目

切换到danny用户,进入danny的主目录

su danny

cd ~

git clone git@localhost:/home/git/repos/testproject

注意:clone只下载当前目录有的文件,不管你在master还是develop分支,只下载当前目录下有的文件。本例子中由于上面git切换回master分支了,所以这里clone的是master分支下的内容。

cd testproject

设置用户
git config user.email "danny_xcz@163.com"
git config user.name "danny"


在该目录下建立一个test文件,并提交。注意此时只是提交到danny目录下的库,并没有提交到git用户目录下的库。
vi test2

git add test2

git commit -a -m "add test2 by danny"

此时可以把更改提交到服务器上,由于git用户在master分支上,所以不能提交到master分支,只能提交到develop分支。

git push (origin master)改命令会报错refusing to update checked out branch: refs/heads/master

git push origin master:develop 把本地master分支提交到远程的develop分支

如果git用户想看到test2,必须切换到master分支。

4 在windows下,使用TortoiseGit连接

在管理员windows机器上通过mysygit的bash命令生成公钥,私钥;在 C:\Documents and Settings\Administrator\.ssh 目录下

ssh-keygen -t rsa

使用 D:\Program Files\TortoiseGit\bin\puttygen.exe,存为putty专用格式

"Load" Administrator\.ssh 目录下的id_rsa

"Save private kay" putty.ppk

同时将公钥中的那行复制到git/.ssh/authorized_keys中

使用TortoiseGit clone一个项目

ssh://git@172.20.1.7/home/git/repos/testproject

勾上Load Putty key "C:\Documents and Settings\Administrator\.ssh\putty.ppk"

注意此时远程的master和develop分支已经不一致了,develop分支多一个test2文件,由于git用户在master下面,所以clone下来只有test文件。必须pull最新的develop分支。

git pull origin develop

此时在本地添加test3文件并提交到git用户的develop分支。

git push origin master:develop

注意:不能push到服务器上当前所在的master分支,会报错。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Git服务器上使用 SSH 公钥授权是一种常见的授权方式,它通过设置公钥和私钥的配对来进行认证和授权。下面是具体的步骤: 1. 生成 SSH 密钥对:在本地终端中使用 `ssh-keygen` 命令生成 SSH 密钥对,该命令将生成一对公钥和私钥文件,一般默认保存在 `~/.ssh` 目录下。 2. 添加公钥到服务器:将生成的公钥文件中的内容复制到服务器上的 `~/.ssh/authorized_keys` 文件中,每个公钥应占据一行。如果 `authorized_keys` 文件不存在,可以使用 `touch ~/.ssh/authorized_keys` 创建新文件。 3. 配置服务器相关设置:确保服务器上的 `sshd_config` 文件中设置了以下配置项: ``` PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys ``` 如果有必要,重启 SSH 服务。 4. 测试连接:在本地终端中执行 `ssh -T git@服务器IP地址` 命令进行测试,如果返回欢迎信息,则表示连接成功。 5. 配置 Git 仓库权限:进入服务器上的 Git 仓库目录,执行 `git init --bare` 命令以设置一个空的 Git 仓库。然后,在本地终端中进入相应的本地 Git 仓库目录,执行 `git remote add origin ssh://服务器IP地址/仓库路径` 命令将远程仓库关联到本地仓库。 这样,当你在本地进行 Git 操作(如 push 或 pull)时,Git 会使用 SSH 公钥与服务器进行授权验证,确保只有拥有相应私钥的用户才能进行操作。这种方式安全可靠,并且不需要每次输入用户名和密码进行授权。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值