Search

Ubuntu Server 정리

목차

설정

공개키 기반 SSH 연결 설정

기본적으로 SSH 접속 시 패스워드를 입력하여 접속하는 경우가 많다. 하지만 개인적으로 외부에 노출되는 서버에 SSH 접속이 필요할 경우에는 패스워드 기반의 접속보다 공개키 기반의 SSH 연결이 안전하다.

키 쌍 생성

먼저 이전과 같이 패스워드를 입력하여 서버에 접속하여, ssh-keygen 명령어를 사용하여 키 쌍(공개키, 개인키)을 만들어준다.
-t 옵션 : 생성할 키 타입
-b 옵션 : 생성할 키의 비트 수
-C 옵션 : 코멘트
ssh-keygen -t rsa -C "TEST"
Bash
복사
위 명령어 입력 시 키 생성을 위해 아래와 같이 여러 정보의 입력을 요구한다.
Enter file in which to save the key : 개인키가 저장되는 위치 (기본 값 - ~/.ssh/)
Enter passphrase (empty for no passphrase) : 패스워드 (미 입력 시 패스워드 설정 안함)
Enter same passphrase again : 패스워드 확인
생성이 완료되었다면 경로로 이동하여 공개키와 사설키를 확인할 수 있다.
이후 공개키 정보를 ~/.ssh/authorized_keys 파일에 아래 명령어로 저장한다. 이 파일은 공개키 기반 SSH 접속 시 사용된다.
~/.ssh/authorized_keys 해당 파일이 없을수도 있지만 아래 명령어로 만들어도 된다.
# cat [공개키 경로] >> [공캐키 목록 파일] cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Bash
복사

생성한 사설키 얻어오기

생성한 키 쌍에서 사설키를 가져오는 방법은 2가지가 있다. 본인은 2번 방법으로 해보았지만, 1번으로 파일을 직접받는게 편하긴 하다.
1.
scp 명령어를 사용하여 로컬로 전송
2.
cat 명령어를 사용하여 드래그 후 복사
아래 명령어를 사용하여 사설키를 확인한다. 본인은 기본 경로에 저장되도록 키 쌍을 만들었기 때문에 ~/.ssh/ 경로에 존재하였다.
# cat [사설키 경로] cat ~/.ssh/id_rsa
Bash
복사
위 결과를 드래그해서 별도의 파일로 만들어주었다. 하지만 이렇게 파일로 받는 방식이 아닌 드래그로 긁어 사설키를 만들때는 주의할 점이 있다.
바로 오른쪽 사진 처럼 맨 마지막줄을 반드시 공백으로 해야한다는 것이다. 만약 왼쪽 사진처럼 사설키를 만들면 사설키가 동작하지 않는다.

SSH 서버 설정파일 변경

서버에 키 쌍을 만들고 키 쌍에 맞는 사설키를 로컬에 저장하였다면 이제 서버의 설정을 변경해주어야 한다.
기존 패스워드 방식의 로그인을 막고 공개키 로그인 방식을 사용하도록 만들어주어야 한다.
/etc/ssh/sshd_config 명령어를 관리자 권한으로 오픈하여 아래처럼 설정파일을 변경해준다.
PubkeyAuthentication 옵션의 # 을 제거하여 공개키 로그인 옵션 활성화
AuthorizedKeysFile 옵션의 # 을 제거 후 공개키 정보가 작성된 파일 위치 설정
PasswordAuthentication 옵션의 값을 yes 에서 no 로 변경하여 패스워드 로그인 옵션 비활성화
변경 전
#PubkeyAuthentication yes ... #AuthorizedKeysFile .ssh/authorized_keys ... PasswordAuthentication yes
Plain Text
복사
변경 후
PubkeyAuthentication yes ... AuthorizedKeysFile .ssh/authorized_keys ... PasswordAuthentication no
Plain Text
복사

SSH 재 시작후 확인

모든 설정이 완료되었다면 ssh 서버를 재시작 후 공개키 기반 인증을 사용하여 접속을 시도한다.
# SSH 서버 재시작 service sshd restart
Bash
복사
ssh 명령어에서 -i 옵션을 사용하여 접속 시 사용할 사설키를 설정할 수 있다.
# 공개키 기반 인증 SSH 접속 ssh -i "개인키 경로" USER@IP
Bash
복사

WEB SERVER

apache 서버 설치 후 사용

sudo apt-get update sudo apt-get install apache2 sudo apt-get install php libapache2-mod-php7.0 # /etc/apache2/mods-enabled/mime.conf 파일에 내용 추가 # AddType application/x-httpd-php .php .php3 .html .htm # AddType application/x-httpd-php-source .phps sudo systemctl start apache2.service
Bash
복사

Crontab을 사용한 작업 스케줄링

crontab을 이용하면 리눅스에서 원하는 시간에 작업을 자동으로 실행할 수 있다.
crontab 설치
apt-get install cron -y
Bash
복사
crontab 서비스 시작
도커 환경에서는 설치 후, 아래와 같이 cron 명령어로 실행해줘야 한다. 만약 서버나 컨테이너를 종료하면 서비스가 종료되기 때문에, 다음에도 동일하게 cron 명령어를 사용해야한다.
cron
Bash
복사
crontab 작업 리스트 확인
crontab -l
Bash
복사
crontab 작업 추가
[min] [hour(24)] [day(month)] [month] [day(week)] [커맨드] 형식으로 작업을 추가한다.
사용법이 헷갈린다면, 이 사이트에서 도움을 받을 수 있다.
min : 매 시간 중 몇 분일 때 → ex) 1 로 설정 시, 매 시간 1분(00:01, ...)이 될때마다 동작한다.
hour : 매일 몇 시일 때 → ex) 1 로 설정 시, 매일 1시가 될때마다 동작한다.
day(month) : 매달 몇일일 때 → ex) 1 로 설정 시, 매달 1일이 될때마다 동작한다.
month : 매년 몇월일 때 → ex) 1 로 설정 시, 매년 1월이 될때마다 동작한다.
day(week) : 1(월요일), ..., 7(일요일) → 1-6 으로 설정 시, 매 주 월~토요일에 동작한다.