Połączenie się z kontenerem za pomocą SSH + Spyder (Python)

0

Hej mój cel jest następujący: chcę stworzyć kontener z zainstalowanym Pythonem i następnie połączyć się ze stworzonym tam kernelem za pomocą Spydera zainstalowanego na lokalnym komputerze. Oto co robię:

Mój dockerfile:

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 key.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"]

USER root
RUN apt update
RUN apt-get install python3-pip -y
RUN pip install jupyter
RUN pip install spyder-kernels

Następnie w Powershellu wpisuje

docker build -t sshubuntu .
docker run -d -p 2022:22 sshubuntu
ssh -i key sshuser@localhost -p 2022 # 
jupyter --runtime-dir # /home/sshuser/.local/share/jupyter/runtime
python3 -m spyder_kernels.console

To tworzy mi kernel w kontenerze i odpowiedni plik json z ustawieniami. Teraz otwieram nowe okno Powershella i kopiuje tego json'a na lokalny komputer

docker cp 21ff6e147a2d:/home/sshuser/.local/share/jupyter/runtime/kernel-24.json .

Plik wyglada nastepujaco:

{
  "shell_port": 46227,
  "iopub_port": 34519,
  "stdin_port": 43075,
  "control_port": 38781,
  "hb_port": 44761,
  "ip": "127.0.0.1",
  "key": "1c925c4a-983896e82c953e4fccb7ce90",
  "transport": "tcp",
  "signature_scheme": "hmac-sha256",
  "kernel_name": ""
}

Na koncu otwieram Spydera -> Connect to an existing kernel i wpisuje to co na zdjeciu, niestety nie dziala (connecting to kernel sie kreci w nieskonczonosc). Tutaj jest instrukcja ktora probuje nasladowac: http://docs.spyder-ide.org/current/panes/ipythonconsole.html#connect-to-a-remote-kernel

spyder.png

Jest mi ktos w stanie powiedziec co robie zle?

0

up

0

A w tym ostatnim kroku to na pewno powinieneś podawać port 22?

0
some_ONE napisał(a):

A w tym ostatnim kroku to na pewno powinieneś podawać port 22?

Probowalem z innymi ale nie dziala. Probowalem tez wybrac plik z private key i wpisalem haslo ale dalej nic.

0

@Ktos: Tak ale nie dziala :( Byloby super gdyby ktos sprobowal odtworzyc to co robie (potrzebny jest jedynie spyder i docker).

0

Ja się nie znam, ale...
tutaj wystawiasz port docker run -d -p 2022:22 sshubuntu i z tego co rozumiem, mapujesz port 22 z kontenera, na localost:2022

Następnie próbujesz się połączyć się spyderem do portu 22, próbowałęś zmienić na 2022?

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