Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

docker: gitlab + traefik & port 22

I need to set up Gitlb behind Traefik.

Everything works except authentication to the app via command line - I don't know how to expose port 22 via traefik.

Any idea how to set it up? How to expose port 22 of a docker container (via traefik)?

I changed the default port from 22 to 10022.

I'm getting via netstat -tulpn

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1132/sshd           
tcp        0      0 0.0.0.0:5355            0.0.0.0:*               LISTEN      1126/systemd-resolv 
tcp6       0      0 :::22                   :::*                    LISTEN      1132/sshd           
tcp6       0      0 :::443                  :::*                    LISTEN      1590/docker-proxy   
tcp6       0      0 :::10022                :::*                    LISTEN      1440/docker-proxy   
tcp6       0      0 :::5355                 :::*                    LISTEN      1126/systemd-resolv 
tcp6       0      0 :::80                   :::*                    LISTEN      1602/docker-proxy   
tcp6       0      0 :::8080                 :::*                    LISTEN      1578/docker-proxy   
udp        0      0 127.0.0.53:53           0.0.0.0:*                           1126/systemd-resolv 
udp        0      0 0.0.0.0:68              0.0.0.0:*                           864/dhclient        
udp        0      0 0.0.0.0:5355            0.0.0.0:*                           1126/systemd-resolv 
udp6       0      0 :::5355                 :::*                                1126/systemd-resolv 

I don't understand why 10022 is connected to docker-proxy.

When I try:

git push --set-upstream origin master
ssh: connect to host git.myserver.com port 10022: Connection refused
fatal: Could not read from remote repository.

Thank you very much

like image 466
David Avatar asked Jul 08 '17 23:07

David


2 Answers

Traefik is an HTTP reverse proxy, and ssh is not an HTTP protocol. So you'll need to simply publish the container's ssh port on an unused port on the host.

like image 62
BMitch Avatar answered Nov 15 '22 03:11

BMitch


As BMitch said, traefik won't handle TCP traffic if it is not HTTP. (SSH is not HTTP).

See this discussion: https://github.com/containous/traefik/issues/10

I recommend you to configure your networking stuff in order to route the traffic of :22 directly to the container.

like image 39
Robert Avatar answered Nov 15 '22 04:11

Robert