로그인

2026 07 20 교수님 주신 문제

작성: 2026.07.20 11:32 최근 수정: 2026.07.20 11:32
1단계: Ubuntu에 SSH 서버 설치

지금 Ubuntu Server의 검은 콘솔 화면에서 한 줄씩 입력하세요.

sudo apt update

완료되면:

sudo apt install -y openssh-server

Ubuntu에 외부 SSH 접속을 받으려면 openssh-server가 설치돼 있어야 합니다.

설치 후 실행합니다.

sudo systemctl enable --now ssh

상태 확인:

systemctl is-active ssh

정상 결과:

active

Ubuntu 24.04는 SSH가 소켓 활성화 방식으로 작동할 수도 있으므로 이것도 확인합니다.

systemctl is-active ssh.socket

active가 나오면 정상입니다.

2단계: SSH 22번 포트 확인
sudo ss -lntp | grep ':22'

정상이라면 다음처럼 LISTEN이 보입니다.

LISTEN 0 4096 0.0.0.0:22
LISTEN 0 4096 [::]:22
3단계: 방화벽 확인
sudo ufw status
Status: inactive인 경우

아무것도 변경하지 않고 넘어갑니다.

Status: active인 경우
sudo ufw allow OpenSSH
sudo ufw reload

확인:

sudo ufw status

다음 항목이 보여야 합니다.

OpenSSH ALLOW
4단계: 현재 Ubuntu IP 확인
ip -4 -br address

또는:

hostname -I

현재 IP는 기록만 해두세요. 이번 Xshell 접속에서는 이 IP를 직접 입력하지 않아도 됩니다.

5단계: Ubuntu 정상 종료

VirtualBox 네트워크를 편하게 설정하기 위해 Ubuntu에서 입력하세요.

sudo poweroff

VirtualBox 관리자에서 가상머신 상태가 전원 꺼짐이 될 때까지 기다리세요.

6단계: VirtualBox NAT 설정

VirtualBox 관리자에서 새 Ubuntu 서버를 선택한 뒤:

설정
→ 네트워크
→ 어댑터 1

다음처럼 맞춥니다.

☑ 네트워크 어댑터 활성화

다음에 연결됨:
NAT

어댑터 종류:
Intel PRO/1000 MT Desktop

☑ 케이블 연결됨

지금은 **NAT 네트워크가 아니라 일반 NAT**를 사용합니다.

VirtualBox의 일반 NAT는 외부에서 게스트로 바로 접근할 수 없지만, 포트 포워딩을 추가하면 Windows의 특정 포트를 Ubuntu의 SSH 포트로 전달할 수 있습니다.

7단계: SSH 포트 포워딩 추가

어댑터 1 화면에서:

고급
→ 포트 포워딩

오른쪽의 초록색 + 버튼을 누르고 다음처럼 입력하세요.

이름 SSH
프로토콜 TCP
호스트 IP 127.0.0.1
호스트 포트 2222
게스트 IP 비워두기
게스트 포트 22

최종 구조:

127.0.0.1:2222 → Ubuntu:22

게스트 IP 칸은 비워두세요. 그러면 Ubuntu의 DHCP IP가 바뀌어도 포트 포워딩을 계속 사용할 수 있습니다.

설정 후:

확인
→ 확인

을 누릅니다.

8단계: Ubuntu 다시 실행

Ubuntu 서버를 다시 켜고 로그인합니다.

SSH가 살아 있는지 다시 확인하세요.

systemctl is-active ssh

정상:

active
9단계: Windows에서 포트 확인

Windows에서 PowerShell을 열고 실행합니다.

Test-NetConnection 127.0.0.1 -Port 2222

정상 결과:

TcpTestSucceeded : True

False가 나온다면 Xshell을 열기 전에 VirtualBox의 포트 포워딩 값을 다시 확인해야 합니다.

10단계: Xshell 세션 만들기

Xshell에서 새 세션을 생성합니다.

세션 이름: Ubuntu-Server
프로토콜: SSH
호스트: 127.0.0.1
포트 번호: 2222

연결 후 사용자 정보를 입력합니다.

사용자 이름: master
비밀번호: 새 Ubuntu 설치 때 만든 master 비밀번호

처음 연결할 때 호스트 키 확인 창이 뜨면:

수락 및 저장

을 누르세요.

11단계: Xshell 접속 성공 확인

Xshell에서 다음 명령어를 실행하세요.

whoami

정상:

master
hostname -I
echo "$SSH_CONNECTION"

마지막 명령 결과 끝부분에 서버의 SSH 포트 22가 표시되면 정상입니다.

지금 완료해야 하는 기준
openssh-server 설치 완료
ssh 또는 ssh.socket active
22번 포트 LISTEN
VirtualBox NAT 포워딩 등록
PowerShell 2222 포트 True
Xshell 127.0.0.1:2222 접속 성공

먼저 Ubuntu 콘솔에서 아래 네 명령까지만 진행하세요.

sudo apt update
sudo apt install -y openssh-server
sudo systemctl enable --now ssh
sudo ss -lntp | grep ':22'

그다음 VirtualBox의 SSH 127.0.0.1:2222 → 게스트 22 포트 포워딩을 설정하면 됩니다.


5단계. Ubuntu 종료

현재 Ubuntu 화면에서 입력하세요.

sudo poweroff

VirtualBox 관리자에서 가상머신이 전원 꺼짐 상태가 될 때까지 기다립니다.

6단계. VirtualBox 네트워크 설정

VirtualBox 관리자에서 새 Ubuntu 서버를 선택합니다.

Ubuntu 가상머신 선택
→ 설정
→ 네트워크
→ 어댑터 1

다음처럼 설정하세요.

네트워크 어댑터 활성화: 체크
다음에 연결됨: NAT
케이블 연결됨: 체크

그다음 아래쪽의:

고급
→ 포트 포워딩

으로 들어갑니다.

7단계. SSH 포트 포워딩 추가

오른쪽의 초록색 + 버튼을 누르고 다음 값을 입력하세요.

이름 SSH
프로토콜 TCP
호스트 IP 127.0.0.1
호스트 포트 2222
게스트 IP 10.0.2.15
게스트 포트 22

최종 연결 구조:

Windows 127.0.0.1:2222
          ↓
Ubuntu 10.0.2.15:22

입력 후 확인 → 확인을 누릅니다.

기존 다른 가상머신이 2222를 사용 중이면 호스트 포트를 2224처럼 다른 번호로 바꿔야 합니다.

8단계. Ubuntu 다시 실행

Ubuntu를 다시 켜고 로그인한 뒤 확인합니다.

systemctl is-active ssh

정상 결과:

active
9단계. Windows에서 포트 확인

Windows에서 PowerShell을 열고 실행하세요.

Test-NetConnection 127.0.0.1 -Port 2222

정상 결과:

TcpTestSucceeded : True

False라면 VirtualBox 포트 포워딩 값이나 기존 2222 포트 충돌을 확인해야 합니다.

10단계. Xshell 세션 생성

Xshell에서 새 세션을 만들고 다음처럼 입력합니다.

세션 이름: Ubuntu-Server
프로토콜: SSH
호스트: 127.0.0.1
포트 번호: 2222

연결 후 로그인:

사용자 이름: master
비밀번호: 새 Ubuntu의 master 비밀번호

처음 연결할 때 호스트 키 경고가 나오면:

수락 및 저장

을 누르세요.

11단계. 접속 성공 확인

Xshell에서 실행합니다.

whoami

정상:

master
hostname -I

정상:

10.0.2.15
echo "$SSH_CONNECTION"

결과 마지막이 22로 끝나면 Xshell 접속 완료입니다.

word 사용자 생성
sudo adduser word

진행 방법:

New password:
→ word 계정 비밀번호 입력

Retype new password:
→ 같은 비밀번호 다시 입력

Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
→ 전부 Enter

Is the information correct? [Y/n]
→ y
3. gnu 사용자 생성
sudo adduser gnu

동일하게 진행합니다.

New password:
→ gnu 계정 비밀번호 입력

Retype new password:
→ 같은 비밀번호 다시 입력

나머지 정보:
→ 전부 Enter

Is the information correct? [Y/n]
→ y
4. 사용자 세 명 생성 확인
getent passwd dvwa word gnu

정상이라면 다음 사용자들이 각각 표시됩니다.

dvwa
word
gnu

홈 디렉터리도 확인합니다.

ls -ld /home/dvwa /home/word /home/gnu
5. public_html 자동 생성 확인

/etc/skel/public_html을 먼저 만들었기 때문에 사용자 홈에 자동 복사되어야 합니다.

ls -ld /home/dvwa/public_html
ls -ld /home/word/public_html
ls -ld /home/gnu/public_html

정상이라면 세 디렉터리가 모두 표시됩니다.

/home/dvwa/public_html
/home/word/public_html
/home/gnu/public_html

소유자도 각각 다음처럼 나와야 합니다.

dvwa dvwa
word word
gnu gnu


1단계: 앞으로 생성할 사용자용 기본 폴더 만들기
sudo mkdir -p /etc/skel/public_html

권한과 소유자를 설정합니다.

sudo chown root:root /etc/skel/public_html
sudo chmod 755 /etc/skel/public_html

확인합니다.

sudo ls -ld /etc/skel/public_html

정상 형태:

drwxr-xr-x ... root root ... /etc/skel/public_html
2단계: 기존 사용자별 public_html 생성
master
sudo install -d -m 755 -o master -g master /home/master/public_html
dvwa
sudo install -d -m 755 -o dvwa -g dvwa /home/dvwa/public_html
word
sudo install -d -m 755 -o word -g word /home/word/public_html
gnu
sudo install -d -m 755 -o gnu -g gnu /home/gnu/public_html

install -d는 폴더 생성과 소유자·권한 설정을 한 번에 처리합니다.

3단계: Apache가 홈 디렉터리를 통과하도록 설정
sudo chmod 711 /home/master
sudo chmod 711 /home/dvwa
sudo chmod 711 /home/word
sudo chmod 711 /home/gnu

711은 다른 사용자가 홈 내부 목록을 마음대로 보지는 못하지만, 정확한 경로를 알고 있을 때 디렉터리를 통과할 수 있게 합니다.

4단계: 최종 확인

아래 명령을 한 줄씩 입력하세요.

sudo ls -ld /home/master /home/master/public_html
sudo ls -ld /home/dvwa /home/dvwa/public_html
sudo ls -ld /home/word /home/word/public_html
sudo ls -ld /home/gnu /home/gnu/public_html

정상적인 형태는 다음과 같습니다.

drwx--x--x master master /home/master
drwxr-xr-x master master /home/master/public_html

drwx--x--x dvwa dvwa /home/dvwa
drwxr-xr-x dvwa dvwa /home/dvwa/public_html

drwx--x--x word word /home/word
drwxr-xr-x word word /home/word/public_html

drwx--x--x gnu gnu /home/gnu
drwxr-xr-x gnu gnu /home/gnu/public_html

여기까지 나오면 4번 사용자 등록과 사용자별 웹 디렉터리 생성 완료입니다. 다음은 새 서버 기준 5번 APM 설치 및 설정입니다.

아래 명령은 Xshell의 새 Ubuntu 서버에서 실행하세요.

1. 패키지 목록 갱신
sudo apt update
2. Apache·MariaDB·PHP 설치

아래 명령어를 한 줄로 입력하세요.

sudo apt install -y apache2 mariadb-server mariadb-client php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip php-intl unzip

설치가 끝나고 다음 프롬프트가 돌아올 때까지 기다립니다.

master@master:~$
5-2. 서비스 실행
Apache 실행
sudo systemctl enable --now apache2
MariaDB 실행
sudo systemctl enable --now mariadb
상태 확인
systemctl is-active apache2
systemctl is-active mariadb

둘 다 다음 결과가 나와야 합니다.

active
5-3. 설치 버전 확인
Apache 버전
apache2 -v
PHP 버전
php -v
MariaDB 버전
mariadb --version

세 명령에서 각각 버전 정보가 나오면 설치된 것입니다.

5-4. PHP 모듈 확인
php -m | grep -E 'mysqli|pdo_mysql|curl|gd|mbstring|xml|zip|intl'

다음과 같은 모듈들이 표시돼야 합니다.

curl
gd
intl
mbstring
mysqli
pdo_mysql
xml
zip

Apache에 PHP 모듈이 연결됐는지도 확인합니다.

sudo apache2ctl -M | grep php

정상 예시:

php_module (shared)
5-5. Apache 기능 활성화

DVWA·WordPress·그누보드에서 사용할 Rewrite 기능을 활성화합니다.

sudo a2enmod rewrite

Apache를 재시작합니다.

sudo systemctl restart apache2

상태 확인:

systemctl is-active apache2

정상:

active

설정 문법도 확인합니다.

sudo apache2ctl configtest

정상 결과:

Syntax OK
5-6. Apache 기본 페이지 확인

서버 내부에서 실행하세요.

curl -I http://127.0.0.1

정상 결과 첫 줄:

HTTP/1.1 200 OK
5-7. PHP 실행 테스트 페이지 생성
sudo nano /var/www/html/apm-test.php

빈 화면에 아래 내용을 입력하세요.

<?php
header('Content-Type: text/plain; charset=UTF-8');

echo "APM 설치 테스트 성공\n";
echo "PHP 버전: " . PHP_VERSION . "\n";
echo "MySQL 모듈: " . (extension_loaded('mysqli') ? '정상' : '없음') . "\n";
?>

저장하고 종료합니다.

Ctrl + O
Enter
Ctrl + X

서버 내부에서 실행 확인:

curl http://127.0.0.1/apm-test.php

정상 출력:

APM 설치 테스트 성공
PHP 버전: 8.x.x
MySQL 모듈: 정상
5-8. MariaDB 작동 확인
sudo mariadb -e "SELECT VERSION();"

정상이라면 MariaDB 버전이 출력됩니다.

데이터베이스 목록도 확인합니다.

sudo mariadb -e "SHOW DATABASES;"

다음 기본 DB들이 표시되면 정상입니다.

information_schema
mysql
performance_schema
sys
5-9. Windows 브라우저 접속용 포트 추가

현재 VirtualBox는 SSH만 포워딩되어 있으므로 웹 접속용 규칙을 추가합니다.

Ubuntu를 종료합니다.

sudo poweroff

VirtualBox에서 다음으로 이동하세요.

가상머신 선택
→ 설정
→ 네트워크
→ 어댑터 1
→ 고급
→ 포트 포워딩

초록색 +를 눌러 추가합니다.

이름: HTTP
프로토콜: TCP
호스트 IP: 127.0.0.1
호스트 포트: 8080
게스트 IP: 비워두기
게스트 포트: 80

기존 SSH 규칙은 그대로 둡니다.

SSH : 127.0.0.1:2222 → 게스트 22
HTTP : 127.0.0.1:8080 → 게스트 80

저장 후 Ubuntu를 다시 실행하세요.

5-10. Windows에서 최종 접속

Windows PowerShell에서 포트를 확인합니다.

Test-NetConnection 127.0.0.1 -Port 8080

정상 결과:

TcpTestSucceeded : True

브라우저에서 Apache 페이지:

http://127.0.0.1:8080/

PHP 테스트 페이지:

http://127.0.0.1:8080/apm-test.php

아래 내용이 보이면 5번 APM 설치 및 설정 완료입니다.

APM 설치 테스트 성공
PHP 버전: 8.x.x
MySQL 모듈: 정상



이 노트는 로그인하지 않아도 열람할 수 있습니다. 작성·수정·삭제는 관리자 로그인 후 가능합니다.