설정
공개키 기반 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 으로 설정 시, 매 주 월~토요일에 동작한다.