본문 바로가기
👾 Server/🐧 Linux

💻 VirtualBox에 Ubuntu(우분투) 설치하고 ssh 서버 만들어 로컬에서 접속하기

by kukim 2022. 1. 6.

*  잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻

 

1. VirtualBox(버추얼 박스) 설치

2. Ubuntu iso (우분투 디스크 이미지 다운로드)

3. 버추얼 박스에 우분투 설치 준비와 디스플레이 설정

4. 네트워크 설정과 sshd 설치와 실행

5. Host OS에서 Guest OS에 SSH 접속하기 & SCP

 


1. VirtualBox(버추얼 박스) 설치

버추얼 박스를 아래 링크에서 다운로드하고 설치한다.

https://www.virtualbox.org/wiki/Downloads

2. Ubuntu iso (우분투 디스크 이미지 다운로드)

원하는 우분투 버전의 디스크를 아래 링크에서 다운로드한다. (글 작성일 기준 20.04.3 LTS)

https://ubuntu.com/download/desktop

 

Download Ubuntu Desktop | Download | Ubuntu

Ubuntu is an open source software operating system that runs from the desktop, to the cloud, to all your internet connected things.

ubuntu.com

3. 버추얼 박스에 우분투 설치 준비와 디스플레이 설정

버추얼 박스 실행 후 아래 단계로 진행한다.

가상 머신(버추얼 박스)에 새로운 OS를 만든다. (New 클릭)

 

가상 머신의 이름, 타입 버전을 설정 (Name은 자유, 하지만 ubuntu 란 이름이 들어가면 type과 version이 자동으로 설정) - Continue
가상머신에서 사용할 렘 사이즈 설정(추후 변경 가능함, 자신의 컴퓨터 사양에 맞게 설정) - Continue

 

Create a virtual hard disk now - Create
VDI - Continue
Dynamically allocated - Continue (위에서 설명했지만 추후에 변경 가능하니 걱정하지 말자)
가상머신도 사실 내 컴퓨터 자원을 쓰기 때문에 어딘가 폴더 경로에 있다. 그 경로와 용량 사이즈를 정하는 옵션이다. (용량은 자신이 주고 싶은 만큼) - Create

 

뭔가 생성됐다. (위 사진은 필자는 이미 설치 했기 때문에 Running으로 되어있지만 여러분들은 PoweredOFF 되어 있다.)

 

UBuntu_~~(본인이 설정한 이름) 클릭 - Settings - Storage - Empty -디스크 모양 - Choose/Create a virtual Opptical Disk 클릭
Add - 2번에서 설치한 Ubuntu ISO 파일경로 지정 (보통 Download 폴더에 들어있다.) - Choose
잘 선택된 것 확인하고 OK

가상머신 실행 시 디스플레이가 크게 확대되어 보이지 않는 경우를 대비해 미리 설정해준다.

Settings - Display - VBoxSVGA를 선택하여 100% 정도로 하면 잘보인다.

4. 네트워크 설정과 sshd 설치와 실행

가상머신 더블클릭하고 새로운 창이 뜨며 조금 기다리다 보면 우분투 설치 화면이 나온다. 파티션 구분이 어렵다면 당황하지 말고 언어, 한글 자판만 설정 해준 뒤 그냥 다음을 끝까지 눌러 설치한다. ID와 PW는 꼭 기억

가상머신 실행 후 설치

 

설치 완료

네트워크 설정

SSH에는 서버와 클라이언트를 구분할 수 있다. 현재 하려는 것은 가상 머신에 설치한 우분투에 내 맥북에서 ssh로 접속하고자 한다. 이때 우분투는 ssh 서버가 될 것이고 맥북은 ssh 클라이언트이다. 우분투는 가상 머신이라 기본적으로 외부와 연결되는 네트워크를 맥북(호스트 OS) IP를 그대로 사용한다. 우분투 가상머신에서 SSH 서버를 사용하기 위해 22 포트를 연다면 내부 맥북과 겹치기 때문에 SSH 포트를 변경해줘야 연결 가능하지만 이 글에서는 버추얼 박스의 Host Network(브릿지)를 새로 만들어 (공유기 같은) 내부에서 쉽게 접속할 수 있도록 한다.

 

먼저, Host OS(맥북)의 터미널에서 아래 명령을 실행하면 뭔가 길게 나온다. 이 명령은 현재 내 맥북의 네트워크 연결된 정보를 볼 수 있다.

ifconfig # Host OS에서 실행

중요한 것은 이게 아니라 버추얼 박스에서 Host Network(브릿지)를 만들어 보자.

 

VirtualBox - File - Host Network Manager

 

Crate - vboxnet0 생성 확인 (주소는 192.168.56.1/24)

브릿지를 추가했다.면 다시 Host OS에서 ifconfig를 실행하면 아까와는 다른 결과가 생긴다.

ifconfig # Host OS에서 실행

맥북에서 갑자기 네트워크 뭔가가 생겼다.?

이제는 방금 만든 브릿지를 버추얼박스의 가상머신(우분투)에 연결해주면 같은 네트워크 상에 Host OS(맥북)과 Guest OS(우분투)가 있기 때문에 내부 IP를 가지고 통신할 수 있게 되었다.

 

가상 머신에 브릿지 연결하기

가상머신을 반드시 꺼준다(Powered Off) - Settings - Network - Adapter 2 - Host-only Adapter - vboxnet0

이제 가상 머신에도 브릿지 네트워크가 연결되었다. 다시 우분투를 부팅해준다. 정말 우분투에 vboxnet0가 있는지 확인해 보려면 맥북과 동일하게 터미널에서 ifconfig 명령을 실행해 vboxnet0의 IP 주소 대역이(129.168.56.xxx) 있는지 확인하면 된다. 하지만 아직 우분투에는 ifconfig 명령이 없기 때문에 설치해줘야 한다.

 

패키지 설치

패키지 관리자 업데이트와 vim 설치

linux 계열마다 패키지 관리자는 다르고 그 종류는 많다. alpine OS 경우 apk, Ubuntu는 apt, apt-get, yum 등 있다. 

apt가 apt-get 보다 설치할 때 UI 적으로 이쁘지만 apt-get에 옵션이 더 많고 추후 스크립트로 OS를 세팅할 때 이점이 있다고 하기에 apt-get으로 패키지를 설치하고자 한다.

# 우분투 OS 터미널에서 실행

# apt-get 패키지 관리자 업데이트와 해당 사항 업그레이드
## -y 를 빼면 커맨드 라인에서 직접 y를 입력해줘야하는데 그것을 미리 입력하는 것이다.
sudo apt-get update
sudo apt-get upgrade -y

# vim 설치
## 기본적으로 우분투에는 vim이 작동하지만 사실 vim-tiny를 사용하고 있다.
## 따라서 .vimrc의 syntax on이 작동하지 않기 때문에 설치해주자.

sudo apt-get install vim -y
echo -e "syntax on \nset nu" >> ~/.vimrc 
source ~/.bahrc # bash refresh
## 간단하게 .vimrc를 생성하며 syntax on 기능과 라인수 보이게 하는 옵션 넣어줬다.
## echo의 -e 옵션은 " " 안의 \n 개행을 인식하기 위해서이다.

네트워크, sshd 설치

# ifconfig 사용을 위한 네트워크 툴 설치
sudo apt-get install net-tools

ifconfig

위 패키지를 설치한 뒤 ifconfig를 실행하면 enp0s08이란 네트워크 이름과 192.168.56.101 주소를 확인할 수 있다.(필자와 다를 수 있다. 각자의 출력된 IP로 접속하니 기억하자.) 이 주소는 브릿지 네트워크에서 우분투 OS에 할당된 IP 주소이다. 이제 아래에서 sshd를 설치하고 Host OS에서 이 주소로 접속하면 된다. 

 

sshd 설치는 간단하다.

# 우분투에서 실행

# install ssh server 설치 
sudo apt-get install openssh-server -y
## /etc/ssh/에 sshd 설정 파일들이 있다.
## /etc/ssh/ssh_config or /etc/ssh/sshd_config

systemctl status sshd # 상태 확인
systemctl enable sshd # OS 부팅시 자동 실행 셋팅 (데몬 설정)
systemctl disable sshd # 자동 실행 취소 (데몬 설정 취소)
systemctl start sshd 
systemctl restart sshd
systemctl stop sshd

기본적으로 설치하면 바로 sshd가 실행되고 있다. systemctl 명령어를 사용해 sshd의 상태를 확인할 수 있다. 

systemctl status sshd

systemctl 명령어는 운영체제에 작동하는 여러 시스템을 데몬(백그라운드 자동 실행,..)을 관리하기 위한 명령어이다. systemctl 명령어는 (/usr/lib/systemd 디렉토리)에서  sshd 뿐만 아니라 OS가 동작하는데 필요한 여러 시스템을 관리한다(아래 사진 참고). service란 명령어도 있는데 이는 /etc/init.d 디렉토리에서 링크 파일을 두고 관리한다. 그 차이로는 CentOS 6버전 이하는 시스템 관리를 service 명령어를 사용 했고, 7버전 이후에는 systemctl 명령어로 관리했다. 7버전 이후에도 service 명령어를 그대로 사용할 수 있는데 내부 동작은 systemctl로 매핑된다고 한다. 좀 더 자세한 차이는 아래 링크를 참고하자.

 The Story Behind ‘init’ and ‘systemd’: Why ‘init’ Needed to be Replaced with ‘systemd’ in Linux

Ubuntu – Difference between systemctl and service commands

/usr/lib/systemd/system, ssh 프로세스 관리 정보가 들어있는것을 확인할 수 있다.

 

5. Host OS에서 Guest OS에 SSH 접속하기 & SCP

이제 다 됐다. 맥북에서 해당 IP로 SSH 접속하면 된다.

ssh id@ip주소

비밀번호 입력

# ssh 접속 옵션은 다양하다. 아래 예 처럼 단순히 로그인 ID의 PW를 입력해 들어가는 것이 있고,
# .pem 파일을 넘겨서 인증하거나, 한 번 연결된 ssh를 Host OS에서 key-gen에 관리하여 쉽게 접속하는 방법도 있다.

 

SCP(SecureCopy) : SSH 프로토콜 기반 파일 전송 프로토콜

ssh 접속을 통해 (클라이언트 -> 서버) 파일도 전송할 수 있다.

scp [옵션] [파일명] [id]@[원격지_ip]:[받는 위치]


echo "Hello Kuki" > hello.txt
scp hello.txt kuki@192.168.56.101:~/

위 터미널은 Guest OS, 아래 터미널은 Host OS이다. Host OS에서 hello.txt 파일을 만들어 scp를 사용해 GuestOS에 파일을 전송했다. Guest OS에서 그 내용을 확인했다.

 

마치며

위는 ssh 서버의 가장 간단한 접속이었다. /etc/ssh/ssh_config 나 /etc/ssh/sshd_config 설정 옵션을 변경하여 접속 가능한 IP 대역 제한, 포트 변경이나 root 계정 접속 가능 여부 등 여러 옵션을 추가하여 변경할 수 있다. 

댓글