계기
기존 로그 수집 서버를 확인해보니 파일은 만들어지나, 내용물이 없는 빈껍데기 파일만 만들어지고 있었다.
너무 오래전에 구축된 것이라..언제부터 작동 안되는지 확인이 불가하였고 간단한 작업이니 직접 다시 만들어보자.
구상도

구상도도 심플하다. 같은 대역 안에 서버를 구축하고 자동화된 스크립트를 이용하기 위해 ssh-keygen 이용하여 키를 만들어 비밀번호 입력 없이 접근할 수 있도록 설정하는 것이다. 그리고 crontab 설정으로 일정 시간마다 스크립트가 실행될 수 있도록 만드는 것이다.
요약하자면
- 비밀번호 없이 원격접속을 위한 ssh-keygen 설정
- 스크립트 출력값을 저장할 로그 파일 위치 설정
- 일정 시간마다 실행될 수 있도록 crontab 설정
ssh-keygen 설정
# ssh-keygen -t <키 유형 선택>
$ ssh-keygen -t rsa
키 알고리즘을 선택할 수 있다. 일반적으로 RSA 또는 ECDSA를 사용한다고 한다. 나는 RSA 알고리즘을 택했다.
키 저장 위치
Enter file in which to save the key (/home/user/.ssh/id_rsa):
원하는 위치가 있으면 경로를 지정해주면 된다. 나는 default 경로를 택했다.
암호 설정
Enter passphrase (empty for no passphrase):
개인키를 보호를 위해 암호를 설정 할 수 있다. 암호를 입력하지 않으면 빈 암호로 설정된다. 나는 빈 암호로 설정했다.
키쌍 확인
키 쌍이 성공적으로 생성되었다면 위에 키 저장 위치에서 지정한 경로에서 확인 할 수 있다,
- id_rsa : 개인키(절대 공유하면 안됨!!!!)
- id_rsa.pub : 공개키(서버에 등록하면 됨)
공개키 서버 등록
$ ssh-copy-id <user>@<접속한 원격 서버 IP>
# ex) ssh-copy-id root@10.0.0.1
그리고 비밀번호를 입력해주면 성공이다. 그 이후부턴 비밀번호 없이 원격접속이 가능할 것이다.
수동으로 공개키 등록 하기
위 방법처럼 하면 쉽게 가능하지만 이상하게도 안되는 경우도 있을 것이다. 그럴 땐 수동으로 등록해주면 된다.
$ cat ~/.ssh/id_rsa.pub | ssh <user>@<원격 서버 IP> 'cat >> ~/.ssh/authorized_keys
사실 위 명령어는 나도 Gemini한테 물어봐서 알아낸 결과물이다 ㅎㅎ
테스트해보니 잘 작동된다. 대충 해석해보자면,
`cat ~/.ssh/id_rsa.pub` : 로컬 시스템의 공개키를 읽어온다.
` | ssh <user>@<원격 서버 IP> ` : 파이프 연산자를 통해 읽어온 공개키를 넘겨준 상태로 ssh 접속을 한다.
` cat >> ~/.ssh/authorized_keys ` : 접속한 원격 서버에서 `cat` 명령어는 전달받은 공개 키 내용을 `~/.ssh/authorized_keys` 파일에 추가해준다.
스크립트 작성하기
로그파일이니 일별로 파일을 작성하려고한다. 그리고 원격으로 접속하여 커맨드를 입력해주고 `>>` 출력 연산자를 이용하여 파일을 저장해주려고 한다. 저장 경로는 원하는 위치로 지정해주면 된다.
#!/bin/bash
FILENAME=$(date +"%Y%m%d")
output_file=$FILENAME.log
COMMAND="<명령어>"
# ssh 접속 후 명령어 결과를 로컬 서버 경로 위치로 저장한다.
ssh <user>@<원격 IP> $COMMAND >> "/var/log/test/$output_file"
Crontab 설정
마지막으로 crontab 설정으로 작성한 스크립트를 원하는 주기로 자동으로 실행할 수 있게끔 설정하면 끝이다.
crontab 명령어
- `crontab -l`: cron 주기 확인
- `crontab -e`: cron 주기 설정
- `crontab -r`: 작성한 cron 설정 삭제
`crontab -e` 을 실행하여 편집기를 열어준 후 주기와 실행할 스크립트 경로를 지정해주면 된다.
# 매일 오전 8시에 /var/log/myscript.sh 를 실행해라.
0 8 * * * /var/log/myscript.sh
결과
오전 8시마다 실행되고 있다!!

'Linux' 카테고리의 다른 글
| Logrorate 사용법 (0) | 2024.07.30 |
|---|---|
| CentOS 6.9에 Python3.11 설치하기 (0) | 2024.07.11 |