열렬히.뛰기

born2beroot - SSH 설정

école 42 > born2beroot > born2beroot - SSH 설정

SSH란?

네트워크 프로토콜의 일종으로써,

네트워크 프로토콜

  • 컴퓨터 네트워크에서 컴퓨터 간 통신으로 위해 사용되는 규칙

    인터넷의 기본 프로토콜 - TCP/IP

    원하는 웹사이트의 웹페이지를 볼 수 있는 - HTTP

    메일을 주고 받을 시 - SMTP, POP3

    인터넷으로 데이터나 파일의 업로드, 혹은 다운로드 시 - FTP

  • 환경이 달라도 (다른 운영체제, 다른 프로그램 사용) 규약을 맞춤으로써 데이터를 안전하게 전송

  • 여러 계층으로 구성되어 있다.

원격 접속 프로토콜

원격 접속 프로토콜은 컴퓨터와 인터넷을 통해 원격으로 접속할 수 있는 프로토콜을 말합니다. 원격 접속 프로토콜을 사용하면, 인터넷을 통해 위치가 떨어져 있는 컴퓨터나 서버에 접속하여 해당 컴퓨터나 서버의 화면을 보고 제어할 수 있습니다.

원격 접속 프로토콜은 일반적으로 클라이언트-서버 모델로 작동합니다. 클라이언트는 자신이 접속하려는 원격 컴퓨터나 서버의 주소를 입력하고, 해당 컴퓨터나 서버에 접속하기 위한 인증 정보를 입력합니다. 이후, 서버 측에서는 클라이언트로부터 요청을 받아들이고, 해당 컴퓨터나 서버의 화면을 클라이언트 측으로 전송합니다. 클라이언트는 전송된 화면을 보고, 마우스나 키보드 등을 사용하여 제어할 수 있습니다.

대표적인 원격 접속 프로토콜로는 SSH(Secure Shell), RDP(Remote Desktop Protocol), VNC(Virtual Network Computing) 등이 있습니다. 이러한 프로토콜은 다양한 운영체제 및 기기에서 지원되며, 원격으로 접속하여 작업을 수행하는 데 매우 유용합니다.

SSH의 정의

SSH(Secure Shell)는 네트워크 프로토콜 중 하나로, 원격 시스템에서 안전하게 로그인하고, 데이터를 전송하고, 원격 시스템을 제어할 수 있는 프로토콜입니다.

SSH는 암호화된 통신을 사용하여 보안성을 보장합니다. 일반적으로 SSH 클라이언트는 로컬 시스템에서 실행되며, SSH 서버는 원격 시스템에서 실행됩니다. SSH 클라이언트는 SSH 서버와 연결하여 로그인하고, 파일 전송 및 원격 명령 실행 등을 수행할 수 있습니다.

SSH 프로토콜의 일반적인 사용은 다음과 같다.

  • 원격 접속 사용자 및 자동화 프로세스의 접근 시
  • 자동화된 파일 전송 시
  • 원격 명령 실행 시
  • 네트워크 인프라와 중요 시스템 관리 시

SSH의 구성

클라이언트-서버 모델로 동작하며 대칭키 방식, 비대칭키 방식, 해시 알고리즘을 사용.

  • 대칭키 방식은 클라이언트-서버 간 전체 연결을 암호화에 사용
  • 비대칭키 방식은 키 교환, 클라이언트 인증, 서버 인증에 사용
  • 해시 알고리즘은 패킷의 무결성을 확인하기 위해 사용
  • 기본 포트는 22

SSH 설정

가상머신을 서버로 설정해 외부의 아이맥을 거기에 연결시키는 것이 목표이다.

openssh 설정 여부

ssh 프로토콜을 사용하기 위한 연결도구로 openssh를 사용한다.

설치 여부를 확인해보고, 안되어 있으면 설치해보자.

bash
# 설치확인
apt search openssh-server

# 미설치 시
apt install openssh-server

openssh 설정

서버일때 openssh 설정은 다음 명령어를 실행한다.

bash
sudo vi /etc/ssh/sshd_config

두 가지 요구사항이 있다.

  1. 포트 번호 : 4242 → port 22라고 되어 있는 부분의 숫자를 바꾸고, 주석 해제
  2. root 연결 방지 → PermitRootlogin no로 설정

이후 다음 코드를 쳐서 설정을 적용한다.

bash
systemctl restart ssh

아이맥과의 연결

어떤 컴퓨터에서 VM에 접속하기 위해서는

  1. host OS의 특정 포트로 접속

  2. host OS의 특정 포트가 Guest OS로 연결

    여기서 host(주인)은 아이맥, Guest(손님)은 가상머신.

문제에서 요구하는 사항은 다음과 같다.

  • imac → 가상머신으로 가는 상황.
  • imac이 outbound, 가상머신이 inbound
    • outbound(나가는 신호) : ssh
    • inbound(들어오는 신호) : sshd
  • openssh 설정 시 sshd로 했던 이유가 바로 이것.
    • sshd : ssh daemon
    • daemon : 백그라운드 상에서 요청을 기다리는 프로세스

포트포워딩

  • 컴퓨터 네트워크에서 인터넷을 통해 들어오는 요청을 특정 컴퓨터나 기기로 전달하는 기술.
  • 인터넷에서는 각각의 컴퓨터나 기기에 대해 고유한 IP 주소를 할당하며, 이 IP 주소는 인터넷에서 해당 컴퓨터나 기기를 식별하는 역할을 합니다.
  • 하지만 IP 주소는 인터넷상에서 전송되는 데이터의 경로를 결정하는 용도로도 사용됩니다.

일반적으로 인터넷에서 컴퓨터나 기기로 들어오는 데이터는 포트 번호를 사용하여 목적지를 지정합니다.

  • ex. 웹 브라우저는 HTTP 프로토콜을 사용하여 80번 포트로 접속합니다.
  • ex. FTP 클라이언트는 FTP 프로토콜을 사용하여 21번 포트로 접속합니다.

따라서 인터넷에서 해당 컴퓨터나 기기로 들어오는 데이터를 수신하려면, 해당 포트 번호로 들어오는 데이터를
수신할 수 있어야 합니다.

포트포워딩은 이러한 포트 번호를 사용하여 인터넷에서 들어오는 데이터를 특정 컴퓨터나 기기로 전달하는 것입니다. 예를 들어, 홈 네트워크에서 IP 카메라를 사용하는 경우, IP 카메라는 고유한 IP 주소를 가지며 80번 포트를 사용하여 웹 인터페이스를 제공합니다.

이 경우, 인터넷에서 해당 IP 주소로 들어오는 데이터를 80번 포트로 전달하려면, 라우터나 모뎀에서 포트 포워딩을 설정해야 합니다. 이를 통해 인터넷에서 해당 IP 주소의 80번 포트로 들어오는 데이터를 IP 카메라로 전달할 수 있습니다.

ip 주소 알아내기 - guest(가상머신)

우선 다음과 같은 명령어를 쳐보자.

bash
ip addr show

다음과 같은 화면이 뜰 것이다.

  • 두번째 enp0s3, inet, 첫 번째 숫자를 가지고 오면 된다. 왜 그런지는 여기를 클릭!
  • 그게 게스트의 ip 주소

ip 주소 알아내기 - host(macOS)

다음 명령어를 쳐서 얻은 주소를 가지고 오면 된다.

ipconfig getipaddr en0
  • 왜 그런지는 여기를 클릭!

포트포워딩 설정 1

  1. 가상머신의 전원을 끈다.
  2. 도구 → 확장 메뉴 (가로줄 3개) → 네트워크 → 속성

  1. NAT Network 누르고 새로 생성. 하단 설정은 다음과 같이 하면 된다.

    NAT Network가 뭔지 모른다면 클릭!

general option

  • Name : 아무 이름이나 치기
  • IPv4 Prefix : 해당 맥의 ip 주소

포트 포워딩

이름 프로토콜 호스트 ip 호스트 포트 게스트 ip 게스트 포트
Rule 1 TCP (아이맥 ip) (호스트 포트) (가상머신 ip) 4242

포트포워딩 설정 2

  1. 노란색 설정 버튼을 누른다. 어딘지 모르겠으면 그림 참고.

  1. Network → 어댑터 1 → Advanced → 포트포워딩 선택

  2. 플러스 버튼을 눌러서 규칙을 추가한다.

    게스트(데비안)의 ip주소와 포트이름(4242)를 쓴다.

    호스트(맥)의 포트이름을 쓴다.

이름 프로토콜 호스트 ip 호스트 포트 게스트 ip 게스트 포트
Rule 1 TCP (호스트 포트) (가상머신 ip) 4242

접속해보기

가상머신의 전원을 껐다가 다시 킨 다음, 클러스터 아이맥의 터미널로 다음 명령어를 입력해서 접속해보자.

bash
ssh <게스트 계정이름>@<게스트 서버주소> -p <포트번호>
#ssh inchoi@localhost -p 8080

NAT 방식을 이용했기 때문에, 게스트 서버주소는 localhost라고 치면 된다.

이제 클러스터 아이맥으로 가상머신을 다룰 수 있게 되었다.

나가고 싶으면 클러스터 아이맥에서 exit을 치면 된다.