PID de encaminhamento de porta SSH dentro do Docker não disponível

PID de encaminhamento de porta SSH dentro do Docker não disponível

Eu tenho 2 máquinas. Aí está minha máquina e uma máquina executando o contêiner SSH Docker. Algum serviço está sendo executado na minha máquina em uma porta especificada e estou encaminhando a porta para o contêiner SSHD. Então estou tentando encerrar o encaminhamento (e a própria conexão SSH).

Ao fazer o encaminhamento de porta diretamente para a segunda máquina (conectando-se ao SSHD normal, não dockerizado), consigo localizar o PID do encaminhamento e, portanto, eliminá-lo.

ssh -N -R 20030:127.0.0.1:20000 [email protected] -p 22 -v

netstatabordagem

root@host /home/username # netstat -antlp | grep 20030
tcp 0 0 127.0.0.1:20030 0.0.0.0:* LISTEN 5918/sshd: username
tcp6 0 0 ::1:20030 :::* LISTEN 5918/sshd: username
root@host /home/username # kill -9 5918

lsofabordagem

root@host /home/username # lsof -n | grep 20030
sshd 6866 username 9u IPv6 1070467 0t0 TCP [::1]:20030 (LISTEN)
sshd 6866 username 10u IPv4 1070468 0t0 TCP 127.0.0.1:20030 (LISTEN)
root@host /home/username # kill -9 6866

O encaminhamento foi encerrado e a conexão SSH também, pois solicitei o encaminhamento apenas com -Na opção SSH.

No entanto, ao usar SSHD dentro do contêiner Docker, a situação não é tão simples.

Digamos que o SSHD do contêiner seja executado na porta 2222. Estou encaminhando a porta.

ssh -N -R 20030:127.0.0.1:20000 [email protected] -p 2222 -v

Então entro no contêiner e tento as mesmas abordagens de antes.

netstatabordagem

root@f9702d3087f0:/# netstat -antlp | grep 20030
tcp 0 0 0.0.0.0:20030 0.0.0.0:* LISTEN -
tcp6 0 0 :::20030 :::* LISTEN -

lsofabordagem

root@f9702d3087f0:/# lsof -n | grep 20030
root@f9702d3087f0:/#

Observe que não consigo localizar o PID do encaminhamento agora. Como o contêiner Docker é diferente de conectar-se diretamente ao host e o que pode ser feito para eliminar o encaminhamento no lado SSHD? Não estou interessado em fazer isso no lado do cliente.

Responder1

Execute o contêiner com esta opção:docker run [...] --cap-add=SYS_PTRACE

Ao usar o Docker Compose, adicione isto à definição do seu contêiner:

    cap_add:
        - SYS_PTRACE

O que isso faz? Da documentação do Docker:

SYS_PTRACE Rastreie processos arbitrários usando ptrace(2).

informação relacionada