Intro

이번에는 원격/게스트 PC와 SSH 연결하는 방법에 대해 설명합니다.
이번 포스트에서 호스트(로컬) 머신의 OS는 윈도우, 게스트(원격) 머신의 OS는 리눅스(Cent, Ubuntu) 환경입니다.

빠른시작 : 설정 말고 연결 명령어만 궁금하다면?
1
2
3
4
5
6
7
8
9
# 기본 포트가 설정되어있을 경우

ssh 유저계정@IP주소
ex. ssh root@127.0.0.1

# 포트를 지정해 접속할 경우

ssh -p 포트번호 유저계정@IP주소
ex. ssh -p 22 root@127.0.0.1


순서

Intro. SSH 란?
(1) 리눅스 SSH 설정
(2) IP 주소 확인
(3) VirtualBox 설정
(4) SSH 연결


SSH란?

SSH은 시큐어 셸(Secure SHell)의 약자입니다.
네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하는 응용 프로그램 혹은 그 프로토콜을 가리킵니다.

로컬 호스트와 로컬 호스트 간, 혹은 로컬 호스트와 게스트 간의 연결을 하는 방법의 일종입니다.

기존의 텔넷 등 원격 접속 방법이 암호화가 되지 않아 보안성이 약했던 반면, SSH는 암호화 기법을 사용합니다.
암호화에 따라 통신이 노출된다고 하더라도, 인증되지 않은 경우 알아볼 수 없는 암호화된 문자로 보이게 됩니다.



시작

(1) 리눅스 SSH 설정

(게스트/원격:리눅스OS에서 진행되는 내용입니다.)

SSH 설치
먼저, SSH 연결이 가능하도록 관련 패키지를 설치해줍니다.
설치할 패키지는 openssh의 server, clients, askpass.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Cent OS
yum install openssh-server
yum install openssh-client
yum install openssh-askpass

# Rocky
dnf install openssh-server
dnf install openssh-client
dnf install openssh-askpass

# Ububtu
sudo apt-get update
sudo apt-get install openssh-server
sudo apt-get install openssh-client
sudo apt-get install ssh-askpass

ssh-server와 ssh-client란?
ssh client : 원격 접속자
ssh server : 접속지 (말 그대로 서버)
ssh client는 필요에 따라서 설치해도 됨

SSH 서비스 실행

SSH 서비스를 실행하고, 서버 시동시 자동 실행되도록 설정합니다.

1
2
sudo systemctl start sshd
sudo systemctl enable sshd

SSH configure
SSH의 환경설정을 해줍니다.
vi편집기를 통해 sshd_config 파일에서 접속 허용할 포트를 설정합니다.

SSH 연결에서 기본 포트는 22로 지정됩니다.
특별한 상황이 아니면 22번 포트를 사용하고, 원하는 포트가 있는 경유 기재해주세요. (4~5자리)

1
sudo vi /etc/ssh/sshd_config


그 외로 sshd_config 파일에서는 아래와 같은 설정도 가능합니다.

1
PermitRootLogin yes      # root 계정으로 ssh 접속을 허용함

root 계정의 비밀번호는 아래와 같이 설정 가능합니다.
편집기 화면을 벗어난 다음에 터미널 환경에서 해주세요!

1
2
$ sudo passwd root
>>> Enter new UNIX password :

ssh 재시작
ssh 서비스를 재시작합니다.

1
2
3
4
5
6
7
8
9
# 공통

sudo service ssh start

# 참고
sudo service ssh start  : ssh 서비스 시작
sudo service ssh stop   : ssh 서비스 종료
sudo service ssh status : ssh 서비스 상태 확인

방화벽(firewall) 설정
방화벽을 켜고, 통신을 할 포트만 접속 허용을 해줍니다.

1
2
3
4
5
sudo ufw enable

sudo ufw allow 포트번호
혹은
sudo ufw allow ssh


(2) IP 주소 확인

(게스트/원격:리눅스OS에서 진행되는 내용입니다.)

IP 주소를 확인해줍니다.
(VirtualBox 가상 머신의 IP 주소는 기본적으로 10.0.2.15 로 설정됩니다.)

IP주소를 확인하는 방법은 여러가지가 있습니다.
이번에는 ip addr 명령어를 통해 확인하겠습니다.

1
ip addr


(3) 버츄얼박스 설정

(호스트/로컬:윈도우에서 진행되는 내용입니다.)

이 단계는 하나의 PC에서 가상 머신을 구동하는 경우에만 진행하는 내용입니다.
서로 독립된 PC인 경우, 연결을 허용하는 쪽에서 포트포워딩을 설정해줍니다.

VirtualBox에서 SSH 접속 정보를 설정해줍니다.

VirtualBox -> 설정 -> 네트워크 -> 포트포워딩

오른쪽에 포트 포워딩 규칙 추가 버튼을 클릭합니다.

호스트와 게스트 IP 주소, 포트번호를 입력합니다.
IP주소와 포트번호는 윗 단계들에서 확인/설정한 번호를 입력하면 됩니다.


(4) SSH 연결

(호스트/로컬:윈도우에서 진행되는 내용입니다.)

이제 SSH 연결을 해봅니다.
SSH 연결은 게스트(원격) 머신이 아닌, 호스트(로컬) 머신에서 합니다.

호스트(로컬)에서 콘솔창을 띄워주신 후, ssh 접속 명령어를 입력합니다.

1
2
3
4
5
6
7
8
9
# 기본 포트가 설정되어있을 경우

ssh 유저계정@IP주소
ex. ssh root@127.0.0.1

# 포트를 지정해 접속할 경우

ssh -p 포트번호 유저계정@IP주소
ex. ssh -p 22 root@127.0.0.1

첫 연결을 진행할 경우, fingerprint를 남길 것이냐는 질문이 나올 것입니다.
당황하지 말고 동의를 진행하면 됩니다.

ssh 연결이 성공했다면, 이제 호스트에서 게스트 콘솔을 제어할 수 있습니다.



Reference

CentOS SSH 설치 : https://itdev4u.tistory.com/entry/CentOS-SSH-설치
Ubuntu SSH 설정 : https://ca.ramel.be/74
Putty 연결 : https://seul96.tistory.com/342
ip주소 확인 : https://mi2mic.tistory.com/199
SSH 란? : https://ko.wikipedia.org/wiki/시큐어_셸
https://codechacha.com/ko/ubuntu-install-openssh/