设为首页 收藏本站
查看: 1209|回复: 0

[经验分享] 搭建通过 ssh 访问的 Git 服务器

[复制链接]

尚未签到

发表于 2018-9-17 13:17:55 | 显示全部楼层 |阅读模式
  from: http://wlog.cn/soft/git-ssh-server-for-debian.html
一、Git - 协议
  Git 可以使用四种主要的协议来传输数据:本地传输,ssh 协议,Git 协议和 HTTP 协议。
  Git 使用的传输协议中最常见的就是 ssh 了。大多数环境已经支持通过 ssh 对服务器的访问 ,ssh 也是唯一一个同时支持读写操作的网络协议。另外两个网络协议(HTTP 和 Git)通常都是只读的。ssh 同时也是一个验证授权的网络协议;而因为其普遍性,一般架设和使用都很容易。
  本文主要介绍如何搭建 ssh 协议的 Git 服务器。
二、在服务器上部署 Git
  首先,你需要一台 Linux 器并且拥有 sudo 权限,本文使用的是 Debian 7.0 x32 。下面就开始安装:
2.1 第一步,安装 git :
$ sudo apt-get install git2.2 第二步,创建一个 git 用户,用来运行 git 服务:
$ sudo adduser git2.3 第三步,设置访问权限:
  有几个办法可以让团队的每个成员都有访问权:

  •   给每个人建立一个账户。反复使用 adduser 并给所有人设定临时密码比较麻烦。
  •   在服务器上建立一个 Git 账户,让每个需要写权限的人发送一个 ssh 公钥,然后将其加入 Git 账户的 ~/.ssh/authorized_keys 文件。这样,所有人都将通过 Git 账户访问主机。
  •   另一个办法是让 ssh 服务器通过某个 LDAP 服务,或者其他已经设定好的集中授权机制,来进行授权。

  这里我们使用第二种方法,收集所有需要登录该 Git 服务器用户的公钥,就是他们自己的>  下面是创建公钥命令:
$ ssh-keygen -t rsa -C  'your email@domain.com'  -t 指定密钥类型,默认即 rsa ,可以省略
  -C 设置注释文字,比如你的邮箱
  关于创建公钥的详细信息,可以参考 http://github.com/guides/providing-your-ssh-key。
2.4 第四步,禁用 shell 登录:
  出于安全考虑,你可以用 Git 自带的 git-shell 工具限制 git 用户的活动范围。这可以通过编辑 /etc/passwd 文件完成。找到类似下面的一行:
  把 bin/sh 改为 /usr/bin/git-shell (或者用 which git-shell 查看它的实际安装路径)
git:x:1003:1003:,,,:/home/git:/bin/bash  改为:
git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell  现在 git 用户只能用 ssh 连接来推送和获取 Git 仓库,而不能直接使用服务器的 shell。尝试普通 ssh 登录的话,会被拒绝登录。
2.5 第五步,初始化Git仓库:
  选定一个目录作为 Git 仓库,如 /home/git/project.git ,在 /home/git/ 目录下输入命令:
$ sudo git init --bare project.git  Git 会创建一个裸仓库,裸仓库没有工作区,因为服务器上的 Git 仓库是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的 Git 仓库通常都以 .git 结尾。然后,把 project.git 的 owner 改为 git :
$ sudo chown -R git:git project.git2.6 第六步,克隆远程仓库:
  ssh 指定私钥的配置管理,为本地添加 ssh 别名,编辑 ~/.ssh/config ,如果没有该文件,创建一个:
$ vi ~/.ssh/config  在 config 中添加:
# 注释说明  
Host 别名
  
HostName  域名或 ip
  
User 登陆服务器用的账号
  
Port 端口号(默认22,可以不填,如果服务器修改了 ssh 登录端口号,此处需要修改)
  
IdentityFile 密钥文件的位置
  例如设置为:
# bingdian's git server  
Host gitserver
  
HostName 162.188.23.33
  
User git
  
Port 9000
  
IdentityFile ~/.ssh/server_rsa
  现在,可以通过 git clone 命令克隆远程仓库了:
$ git clone ssh://git@gitserver:/home/git/project.git  接下来你就可以享受你的 Git 之旅了。
扩展阅读

  •   http://git-scm.com/book/zh/服务器上的-Git-协议

  •   Custom>
  •   Git config for mutiply ssh keys



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-588450-1-1.html 上篇帖子: centos6.6安装web版GIT --gogs 下篇帖子: 版本管理工具:git svn 的比较
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表