配置完后可以使得Gogs的ssh地址不需要端口
- 创建
git
用户并把git
用户设置uid
为1000
,sudo useradd git -u 1000
- 创建一个存放
gogs container
的目录,并把目录所有者授予git
用户,sudo chown -R git:git your_path
- 切换到
git
用户,共享.ssh
目录:
ln -s your_path/git/.ssh ~/.ssh
- 生成
git
用户的public key
,ssh-keygen
然后接三个回车 - 把生成的
id_rsa.pub
附加到authorized_keys
文件:
cat id_rsa.pub >> authorized_keys | echo -n 'no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ' >> authorized_keys
- 切换到
root
用户或者具备sudo
权限的用户,运行下面这个脚本:
mkdir -p /app/gogs/
cat >/app/gogs/gogs <<'END'
#!/bin/sh
ssh -p your_ssh_port -o StrictHostKeyChecking=no git@127.0.0.1 \
"SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@"
END
chmod +x /app/gogs/gogs
Enjoy it!
Tips:
git
的sh
不能设置为git-shell
Final
经过本人折腾的经历发现,当删除一个秘钥的时候,整个
authorized_keys
文件都会被清空。所以目前本人已经放弃在docker-compose
中集成Gogs
了。
二进制大法好!