나는 도커 컨테이너의 도움으로 내 문제를 설명했지만 이 예는 질문의 나머지 부분과 직교합니다. 실제로 브리지 인터페이스 사용을 허용하는 모든 프로그램이 ssh
가능합니다.
저는 포그라운드에서 실행되는 데몬에 의해 생성된 데몬 sshd
을 백그라운드에서 실행하는 Docker 컨테이너를 사용합니다 . supervisord
나는 설치를 /tmp/.X11-unix
컨테이너에 묶지 않고 소켓을 컨테이너에 완전히 노출시키지 않고 X11 전달을 구현하는 안전한 방법으로 주로 ssh를 사용합니다. docker top containername
컨테이너를 시작한 후 즉시 사용하면 다음과 같은 결과가 나타납니다 .
UID PID PPID C STIME TTY TIME CMD
root 4732 535 1 19:56 ? 00:00:00 /usr/bin/python /usr/bin/supervisord
root 4745 4732 0 19:56 ? 00:00:00 /usr/sbin/sshd
이것은 예상대로 작동합니다. 이제 컨테이너의 포트 22를 호스트의 포트 5000에 노출하고 있습니다. 따라서 ssh -X username@localhost -p 5000
. 클라이언트와 호스트가 서로 다른 컴퓨터이고 서로 다른 네트워크에 있을 때 ssh가 어떻게 작동하는지 알고 있지만 클라이언트와 호스트가 동일한 컴퓨터일 때 몇 가지 문제가 있습니다(제 경우 클라이언트는 일반 시스템이고 호스트는 일반 시스템의 컨테이너입니다). ). 나는 docker가 내 일반 컴퓨터의 물리적 네트워크 장치와 내 컴퓨터의 가상 네트워크 장치 사이에 브리지를 생성한다는 것을 알고 있습니다.
하지만 일반 기계와 컨테이너는 정확히 어떻게 서로 통신합니까? 브리징 장치에서 할당한 IP 주소를 통해 사용하고 통신합니까?
이 프로세스에 관련된 포트는 어떻게 IP 주소를 사용할 필요를 없애나요?
클라이언트와 호스트가 동일한 시스템에 있고 방금 설명한 방식으로 구성되었을 때 ssh를 사용하는 가장 효율적이고 권장되는 방법이 있습니까?
광범위한 인터넷 검색으로는 충분한 답변을 얻지 못했습니다. 그렇다고 해서 그런 사이트가 존재하지 않는다고 단언할 수는 없습니다!