협업툴,가상환경 정리/docker_정리
docker container to container ssh 접속
알 수 없는 사용자
2022. 10. 5. 19:13
의도한건 "A docker container" 에서 "B docker container" 로 root로써 접속하려는 것.
docker-compose 를 이용해서 만들것
이렇게 2가지이다.
방법은
1. ssh 로 접속 될 도커에 ports를 포트포워딩한다.
2. root의 비밀번호를 설정한다.
3. openssh-server 를 다운 받는다.
4. "/etc/ssh/sshd_config" 스크립트 파일을 수정한다. ( "PermitRootLogin yes" )
5. ssh 서비스 리스타트 !
접속방법은
# 172.29.0.X ABC클이 같은 네트워크에선 ssh -p 22 root@172.29.0.5 또는 ssh root@172.29.0.5 로 접근
# 172.29.0.X ABC클이 다른 네트워크에선 ssh -p 2222 root@172.29.0.5
docker-compose 코드 사진
docker-compose 코드
edge_server:
image: osrf/ros:foxy-desktop
#image: ubuntu:focal
container_name: edge_server
hostname: edge_server
working_dir: /app
environment:
- LANG=C.UTF-8
- LC_ALL=C.UTF-8
- ROS_DISTRO=foxy
- BASH_FILES_DIRECTORY=docker_files
depends_on:
- emqx_440
networks:
network:
ipv4_address: "${NETWORK_ABC_CLASS}.5"
ports:
- '2222:22' # 외부 포트는 2222 실제 내부로 접속되는건 22 // 포트포워딩
expose:
- 22 # openssh 설치 && root 패스워드 설정 && RootLogin 허용 && UsePAM 을 주석처리
# 172.29.0.X ABC클이 같은 네트워크에선 ssh -p 22 root@172.29.0.5 또는 ssh root@172.29.0.5 로 접근
# 172.29.0.X ABC클이 다른 네트워크에선 ssh -p 2222 root@172.29.0.5
volumes:
- ../:/app
- /etc/localtime:/etc/localtime
#restart: always
entrypoint: >
bash -c '
echo "root:root" | chpasswd &&
apt update && apt install openssh-server sudo -y &&
sed -i "s|#PermitRootLogin prohibit-password|PermitRootLogin yes|" /etc/ssh/sshd_config &&
service ssh restart &&
chmod 777 $BASH_FILES_DIRECTORY/* &&
source $BASH_FILES_DIRECTORY/ros_entrypoint.sh &&
source $BASH_FILES_DIRECTORY/run_colcon.sh &&
source $BASH_FILES_DIRECTORY/start_server.sh &&
source $BASH_FILES_DIRECTORY/sleep_to_delay_closing_time.sh
'