Gogs与Linux主机共享SSH22端口

来源:互联网 发布:淘宝双十一数据统计 编辑:程序博客网 时间:2024/05/17 23:22

前言

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/shssh -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了哦