首页>软件资讯>常见问题

常见问题

docker方式部署的gitlab在使用ssh协议克隆时如何不带端口

发布时间:2024-08-29 22:48:50人气:25

今天在测试一个项目的流水线时想使用ssh协议进行克隆,但是发现自己的gitlab中ssh协议带了端口,对于我这种有强迫症的人来说肯定不能忍,今天就来聊聊几种解决方案。

vue-test.png

首先我的docker-compose.yaml是这样的:version: "3"services:  gitlab:    image: "gitlab/gitlab-ce:15.8.2-ce.0"    container_name: "gitlab"    restart: always    privileged: true    hostname: "gitlab"    environment:# 指定root密码      GITLAB_ROOT_PASSWORD: xxxxxxx      GITLAB_OMNIBUS_CONFIG: |        gitlab_rails['time_zone'] = 'Asia/Shanghai'        external_url 'http://192.168.31.31'        gitlab_rails['gitlab_shell_ssh_port'] = 1122    ports:      - "443:443"      - "1122:22"    volumes:      - "$PWD/gitlab/config:/etc/gitlab"      - "$PWD/gitlab/logs:/var/log/gitlab"      - "$PWD/gitlab/data:/var/opt/gitlab"    shm_size: "512m"    networks:      - gitlabnetworks:  gitlab:    driver: "bridge"    driver_opts:      com.docker.network.enable_ipv6: "false"因为如果使用22端口,会和宿主机的sshd服务端口冲突,导致服务服务无法启动,所以这里将22端口映射成1122了,这样在使用ssh协议克隆项目时就需要带上端口,类似这样:ssh://git@192.168.31.31:1122/test/vue-test.git像github\gitee等可以看到都是不带端口的:

端口.png

如果想做到这样有下面一些解决方案,如果大家有其他的方式,也欢迎在评论区留言。方式一:

简单粗暴的方式,就是将宿主机的sshd服务端口改成22之外的其他端口,然后gitlab就用22端口

删除gitlab_rails['gitlab_shell_ssh_port'] = 1122

端口直接映射22端口ports:  - "22:22"缺点:有的企业可能为了统一管理并不让修改sshd默认端口


方式二:使用额外的nginx代理服务器进行代理1. nginx代理服务器的ssh服务改成22外的其他端口2. nginx代理22端口

1)安装stream模块yum install epel-releaseyum install http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpmyum install - y nginxyum install -y nginx-mod-stream 或者 yum install -y nginx-all-streamyum install gcc pcre-devel zlib-devel openssl-develnginx -V | grep stream2)配置tcp代理# cat /etc/nginx/nginx.conf...include /usr/share/nginx/modules/*.conf;...stream {include /etc/nginx/stream.d/*.conf;}



# mkdir /etc/nginc/stream.d# cat /etc/nginc/stream.dupstream gitlab-ssh{  server 192.168.31.31:1122;}

server {  listen 22;  proxy_connect_timeout 60s;  proxy_timeout 60s;  proxy_pass gitlab-ssh;}# nginx -t# nginx -s reload

方式三:ssh隧道方式(注:网络搜索的答案,未亲自经验证)1. gitlab服务配置ssh正向代理,192.168.31.32为代理服务器ssh -fCNR 8889:localhost:1122 root@192.168.31.322. proxy机器配置反向代理(原ssh服务需另起端口,比如6622)ssh -p 6622 -fCNL *:22:localhost:8889 localhost方案四:iptables + haproxy1. haproxy服务器将sshd服务改为除22外的其他端口

2. haproxy服务器上把访问22端口的请求都转发到8888端口iptables -t nat -A PREROUTING --dst 192.168.31.32 -p tcp --dport 22 -j DNAT --to-destination 192.168.31.32:88882. haproxy配置文件中/etc/haproxy/haproxy.cfg配置8888端口代理到gitlab服务器的22端口listen gitlabssh      bind 0.0.0.0:8888      mode tcp      #maxconn 4086      #log 127.0.0.1 local0 debug      server gitlab 192.168.31.31:1122



上一条:Altium Designer 24.8.2 版本发布,新功能说明

下一条:如何查看docker应用日志