"Connection timed out" przy próbie połączenia się z kontenerem przez SSH

0

Hej, próbuję połączyć się z kontenerem przez SSH śledząc ten poradnik: https://goteleport.com/blog/shell-access-docker-container-with-ssh-and-docker-exec/ ale przy kroku trzecim, gdy wpisuje:

ssh -i key.pub [email protected] -p 2022

to dostaje blad: ssh: connect to host 172.17.0.3 port 2022: Connection timed out. Jest ktos w stanie podpowiedziec co robie nie tak?

0

Przede wszystkim: czy masz ssh-server zainstalowany w kontenerze?

0
Patryk27 napisał(a):

Przede wszystkim: czy masz ssh-server zainstalowany w kontenerze?

tak robie dokladnie to samo co w instrukcji wiec moj Dockerfile wyglada nastepujaco:

FROM ubuntu:latest
RUN apt update && apt install  openssh-server sudo -y
# Create a user “sshuser” and group “sshgroup”
RUN groupadd sshgroup && useradd -ms /bin/bash -g sshgroup sshuser
# Create sshuser directory in home
RUN mkdir -p /home/sshuser/.ssh
# Copy the ssh public key in the authorized_keys file. The idkey.pub below is a public key file you get from ssh-keygen. They are under ~/.ssh directory by default.
COPY idkey.pub /home/sshuser/.ssh/authorized_keys
# change ownership of the key file. 
RUN chown sshuser:sshgroup /home/sshuser/.ssh/authorized_keys && chmod 600 /home/sshuser/.ssh/authorized_keys
# Start SSH service
RUN service ssh start
# Expose docker port 22
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]

Dockera uzywam od niedawna wiec mozliwe ze jakies posrednie kroki zle robie, byloby fajnie gdyby ktos mogl sprawdzic czy u Was ta krotka instrukcja dziala.

0

Update: jak wpisuje

ssh -i idkey sshuser@localhost -p 2022

to moge sie zaloowac do kontenera, ale jak wpisuje

ssh -i key [email protected] -p 2022

to mam connection timed out.. Ip wzialem z nastepujacej komendy:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 0f207a349da8

Ktos moze zna powod?

2

docker inspect sprawdza ci adres IP kontenera w wirtualnej sieci stworzonej dla utrzymania infrastruktury dockera na hoście. Po tych adresach możesz się łączy np. pomiędzy kontenerami, ale jeżeli chcesz łączyć się z zewnątrz np. z danego hosta lub z innego komputera to musisz forwardować port za pomocą polecenia EXPOSE. Wtedy usługa jest dostępna "na zewnątrz" i można się do niej łączyć po IP komputera lub z komputera po adresie localhost.

0

Ktos moze zna powod?

Skoro Twój Dockerfile mówi EXPOSE 22, to ten sam port powinieneś wykorzystać w poleceniu ssh łącząc się wprost do kontenera.

1 użytkowników online, w tym zalogowanych: 0, gości: 1