Tech Bastion

리눅스에서 윈도우로 파일 전송하기(scp, ssh키 생성 및 적용 방법) 본문

OS/linux

리눅스에서 윈도우로 파일 전송하기(scp, ssh키 생성 및 적용 방법)

ServerPhantom 2024. 8. 19. 14:42

안녕하세요, 오늘은 저번 작업에 이어 자동으로 백업된 파일을 서버에서 로컬 피시로 이동시키는 자동화를 진행할 거예요.

 

 

처음에는 NFS, SMB 같은 방법으로 마운트 시켜서 디렉터리를 연결시키는 방법으로 진행하려고 했는데 이게 사실 서버가 다운될 경우 로컬 피시에 백업 파일을 따로 보관하는 의미가 사라 질 것 같아 다른 방법을 찾아봤어요.

 

결론은 scp를 사용해서 백업된 파일을 윈도우로 전송시키는 방법 선택!!

 

시작하기 전에 저번 작업내용을 보면 파일명을 백업날짜로 지정을 해놨기 때문에 CMD에서 date 포맷을 먼저 확인해 볼게요

 

 

CMD date 포맷 확인


 

date

echo %date%      #2024-08-19
echo %date:-=%   #20240819

 

time

echo %time%        #14:04:26.17
echo %time:~0,2%   #14    (시)
echo %time:~3,2%   #04    (분)
echo %time:~6,2%   #01    (초)

 

 

 

포맷 적용하는 방법은 알아봤으니 본격적으로 scp를 사용해서 파일을 전송시켜 볼게요

 

SCP 사용


#scp (접속계정)@(접속할 IP):/파일이 있는 디렉토리 저장할 위치
scp root@000.000.000.000:/home/db/db_%date:-=%/.sql E:\DBBackUp

 

아 저는 예를 들기 위해  저번부터 root를 사용하고 있지만 실제 작업할 때는 root를 사용하지 않아요!

 

이렇게 진행을 하면 패스워드를 입력하라고 하고 이후에

파일이 전송되는 걸 확인이 가능합니다.

 

 

하지만 저희는 자동화가 목적이잖아요??  

 

 

bat 스크립트 파일 생성


 

@echo off
setlocal

rem 변수 설정

set REMOTE_USER=root
set REMOTE_HOST=000.000.000.000
set REMOTE_PATH=/home/db/db_%date:-=%.sql
set REMOTE_PATH1=/home/db/all_db_%date:-=%.sql
set LOCAL_PATH=E:\DBBackUp

rem scp 명령어 실행
scp %REMOTE_USER%@%REMOTE_HOST%:%REMOTE_PATH% %LOCAL_PATH%
scp %REMOTE_USER%@%REMOTE_HOST%:%REMOTE_PATH1% %LOCAL_PATH%


endlocal

 

 

이렇게 .bat파일을 생성해 주었고 실제로 이 프로그램을 실행시키면 패스워드를 입력하라는 문구가 뜬 후 

그림과 같이 파일이 전송되는 걸 확인이 가능해요.

 

이제 스케줄러에 등록해서 자동으로 프로그램이 실행만 되면 되겠지만 마지막 관문이 있죠???? 자동으로 진행될 때는 패스워드를 입력할 수 없어요.

 

때문에 ssh키를 등록하여 패스워드 입력 없이 연결 가능하도록 세팅을 해볼게요

 

 

 

SSH서버에 자동 로그인(ssh-keygen)


윈도우에서 ssh키 생성하기 (CMD)

ssh-keygen -t rsa

 

"-t rsa" : rsa방식으로 키를 생성한다 는 뜻

 

"-b 4096"  : 4096 크기의 비트로 키를 생성, 기본 2048이지만 보안을 위해 4096을 사용한다. (저는 그냥 진행했어요)

 

명령어를 입력하고 나면 rsa를 지정할 디렉터리 설정하기, ssh 패스워드 설정 등 입력하라고 하는 내용 들이 나오는데 그냥 엔터를 다 눌러도 무관합니다. 

 

 

이후 리눅스에 접속해서 키 복사하기

mkdir -p ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

 

echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDC+... (복사한 공개 키)" >> ~/.ssh/authorized_keys

 

권한 설정까지 마무리해 주고 다시 bat 프로그램을 실행하면 패스워드를 입력하지 않고도 바로 파일 전송이 진행된답니다

 

 

이제 스케줄러만 등록 후 테스트 하면 완료!

 

 

윈도우 스케줄러 등록


스케줄러는 시키는 대로만 설정하면 문제없긴 한데 그래도 혹시 모르니 간단하게만 설명해 볼게요 (정말 간단함 주의)

 

 

트리거는 새로 만들기를 선택한 후 필요한 주기, 날짜를 지정하면 됩니다

 

동작 부분은 프로그램 찾아보기에서 아까 만들어놓은 bat 프로그램을 등록시키면 돼요!

 

마지막으로 사용자 계정을 administrators로 지정해 주고 마무리했습니다.

 

 

 

 

이제 자동으로 백업되고 복사되는 걸 지켜보기만 하면 되는데 정말 흐뭇하네요 ㅎㅎ