前言
Gogs 是一个Git服务器, 跟Github 和 GitLab 很像; 但它是用Go语言编写的, 比GitLab更轻量化, 功能也很齐全.
但是, Gogs不管你是在物理机上面直接搭建的 or 跟我一样使用Docker构建的 Gogs 容器都存在一个问题; 那就是SSH服务已经占用了22端口; 导致你要么更改其他的端口连接到你的服务器或者 Gogs 服务器监听其他的端口上的SSH 连接. 这两种选择对于有强迫症来说, 简直是不能忍!~
git@server_ip:10022/username/project.git #这是非常不好看的.我希望他跟Github一样的整洁
git@server_ip:username/project.git #跟Github一样,完美~~
操作步骤
下面我就用详细的操作教你, 在Linux 和 Docker - Gogs 之间共享22端口.
-
新建一个用户
git
并且给它 UID 1000,GID 1000;$ adduser git
-
下面就可以重新运行Gogs 容器了, 127.0.0.1 环回IP限制只能本地使用SSH服务连接到Gogs, 提高容器的安全性.
$ docker run --name=gogs -v ~git/gogs:/data -p 127.0.0.1:10022:22 -p 3000:3000 \ --link=mysql:db -d gogs/gogs
-
使用刚刚创建的git用户, 创建一个
~git/gogs/git/.ssh
到~/.ssh
的链接$ su git # 登录git用户 $ ln -s ~/gogs/git/.ssh ~/.ssh
-
为 git 用户生成一个SSH密钥, 并将其添加到 '.ssh/authorized_keys' 中
$ ssh-keygen -t rsa -P '' # 全部默认即可, 直接回车 $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
-
为了安全, 还要打开
~git/.ssh/authorized_keys
, 在文件最开始添加以下语句:$ vi ~git/.ssh/authorized_keys # 打开authorized_keys,然后定位到开头的位置 no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty # 添加好之后我们查看一下authorized_keys是不是下面这样的形式 $ cat ~git/.ssh/authorized_keys > no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa...
-
好了,到了这里就将近完成了90%,离最后的胜利还差一点点操作. 接下来的操作也是最核心关键的.
完成了前面的所有操作之后, 我们现在要退出 git用户,用root来操作了哦
$ mkdir -p /app/gogs/ $ cat >/app/gogs/gogs <<'END' #!/bin/sh ssh -p 10022 -o StrictHostKeyChecking=no git@127.0.0.1 \ "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@" END $ chmod 755 /app/gogs/gogs # 授予755权限之后&运行一下
然后共享22端口配置就完成了.只剩下web配置就大功告成了.
打开 Chrome浏览器, 把剩下的配置配置完成就OK了.
注意:web配置里面的ssh端口要填22了哦