2026 07 20 교수님 주신 문제
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 모듈: 정상
이 노트는 로그인하지 않아도
열람할 수 있습니다.
작성·수정·삭제는
관리자 로그인
후 가능합니다.