配置完后可以使得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了。
二进制大法好!