목차
2022-02-04
리눅스에서 다른 리눅스 서버로 일정시간마다 파일을 전송해줘야 하는 task가 생겼다.
기본적으로 쉘 스크립트에 scp 코드를 작성하여 보내려고 했으나 매번 비밀번호를 수동으로
입력해줘야 하는 문제가 발생하였다. 찾아보니 공개키를 이용하면 추가적인 비밀번호 입력없이
scp로 파일을 전송할 수 있다고 해서 공부하면서 작성해보려 한다.
PC 1 (호스트)
1. 공개키 생성
ssh-keygen -t rsa
위 명령어를 입력하면
"Generating public/private rsa key pair"
"Enter file in which to save the key ... "
와 같이 나오는데 default로 그냥 enter를 누른다
"Enter passphrase (empty for no passphrase):"
또 위와같은 텍스트가 나오면 passphrase를 사용하지
않기때문에 enter를 두번 누른다
"Your identification has been saved in ... "
"Your public key has been saved in ... "
방금 만든 공개키 파일명과 위치를 기억하라 (항상 파일명이 .pub로 끝난다)
나의 경우 /home/msdl/.ssh 디렉토리에 공개키와 개인키가 저장되었다.
cd /home/msdl/.ssh
ls
해당 디렉토리에 들어가서 공개키가 잘 저장되었는지 확인한다.
2.공개키를 scp로 대상 서버에 복사
scp -P 포트번호 /home/msdl/.ssh/id_rsa.pub msdl@아이피주소:/home/msdl
PC 2 (서버)
1. 공개키 생성
ssh-keygen -t rsa
2. PC 1에서 받아온 공개키를 PC 2 authorized_keys 에 등록
cat /home/msdl/id_rsa.pub >> /home/msdl/.ssh/authorized_keys
이렇게 하면 다음부터 scp 로 파일을 전송할 때 추가적으로 비밀번호를 입력하지 않아도 된다!! (삶의 질 상승 ...)
오류
만약 .ssh 파일 혹은 디렉토리를 찾을 수 없다는 에러를 만나면
다음의 순서에 따라 하면 해결할 수 있다.
1. .ssh 디렉토리 생성
mkdir ~/.ssh
2. .ssh 폴더 권한부여
chmod 700 ~/.ssh
3. authorized_keys 파일 생성
touch ~/.ssh/authorized_keys
4. authorized_keys 파일에 권한부여
chmod 600 ~/.ssh/authorized_keys
5. 마지막으로 PC 1 에서 받아온 공개키를 authorized_keys 에 추가
cat /home/msdl/id_rsa.pub >> ~/.ssh/authorized_keys
2022-02-04 추가 작성
1. PC 1 crontab 세팅
위와 같이 핵심은 /home/msdl/script.sh 쉘 스크립트 절대경로 앞에 bash 를 넣어주는 것이었다!!
(한참 고생했다 ㅠㅠ)
2. PC 1 script.sh 세팅
※ 주의 (위와 같이 쉘 스크립트 안에 scp 뿐만 아니라 다른 명령어를 넣을 때 backtick 부호 ( ` ) 로 감싸주어야 한다!!) ※
3. PC 1 directory file list
4. PC 2 directory file list
다음과 같이 일정시간마다 자동으로 파일을 전송해주는 스크립트가 완성되었다!
'기본기 > OS' 카테고리의 다른 글
[ubuntu] apt install로 설치한 패키지 anaconda 가상환경에 집어넣기 (0) | 2022.03.17 |
---|---|
[windows10] 배치파일을 이용하여 파이썬 파일 실행하기 (0) | 2022.02.09 |
[ubuntu] 일정시간마다 파이썬 코드 실행 (Crontab) (0) | 2022.02.03 |
[ubuntu] 18.04 CUDA, cuDNN 설치 (0) | 2021.08.09 |
[ubuntu] 18.04 설치 후 세팅하기 (0) | 2021.08.09 |