반응형

과거 ftp를 많이 사용하던 시절, ncftp는 기존 ftp 쉘 프로그램의 한계를 극복하는 훌륭한 프로그램이었습니다. 북마크, 디렉토리 포함해서 다운로드, 업로드 등 여러가지 다양한 기능이 있었죠.

하지만, ftp의 취약점이 널리 알려진 지금은, 기업이나 학교의 경우 망 공급원(ex. KT, SKB, LGU+ 등)의 메트로스위치에서 ftp나 smb 포트를 막는 경우가 많습니다. 특히 최근 인터넷나야나 사태를 비롯하여 에레버스(Erebus), 워너크라이, 페트야 등 악성 랜섬웨어의 창궐로 보안의 중요성이 더욱 강조되고 있습니다.

scp 도 명령어에 해당 서버의 계정정보를 적기 때문에 보안에 완벽하다고는 할 수 없지만, 주고 받는 데이터는 암호화 하기 때문에 ftp나 ncftp에 비해 안전하다고 볼 수 있습니다. 그럼 scp 사용법을 알아보겠습니다.





1. 원격서버 파일 -> 로컬서버로 전송


# scp [옵션] [원격지서버계정]@[원격지서버 IP]:[원격지서버 디렉토리] 로컬서버:[디렉토리]

실제 예제를 보시면, 이해가 쉽습니다.

예를 들어 10.10.10.1 서버에 있는 /home/backup 디렉토리를 로컬 서버의 /home으로 복사하려고 할 때, 아래와 같은 형식으로 명령어를 실행하면 됩니다.

# scp -r root@10.10.10.1:/home/backup /home/
미리 로컬파일 /home으로 이동하면 . 으로 로컬 경로를 대신할 수도 있습니다.
# scp -r root@10.10.10.1:/home/backup .

파일 하나만 전송할 경우는 -r 옵션을 빼고 실행하면 됩니다.
# scp root@10.10.10.1:/home/backup/test.tar.gz /home/
# scp root@10.10.10.1:/home/backup/test.tar.gz .





2. 로컬서버 파일 -> 원격서버로 전송


# scp [옵션] 로컬서버:[디렉토리] [원격지서버계정]@[원격지서버 IP]:[원격지서버 디렉토리]

로컬서버의 파일을 원격지로 전송하기 위해서는 로컬서버와 원격지서버 정보를 바꾸면 됩니다.

# scp -r /home/ root@10.10.10.1:/home/backup 
# scp /home/backup/test.tar.gz root@10.10.10.1:/home/backup





3. scp 옵션

scp man page에는 여러 옵션이 있지만, 실제 사용하는 옵션은 몇 개 안됩니다.


     -P port  --> ssh 기본포트인 22번 외 다른 포트를 사용할 경우, 이 옵션을 사용합니다

     -p      Preserves modification times, access times, and modes from the original file.
원 파일의 속성을 그대로 유지할 경우 사용합니다.
     -r      Recursively copy entire directories.  가장 많이 사용하는 옵션입니다. 디렉토리 전체를 scp 할 때 사용합니다.





4. sshpass 설치 및 사용법(scp 자동화)


scp로 원격지 파일을 가져오거나, 보낼 때 접속계정의 비밀번호를 입력해야 합니다. crontab 등을 이용하여 scp를 자동화, 스케줄링 하려면 비밀번호 입력절차를 scp 옵션에 포함해야 합니다. 이를 위해서는 sshpass 를 사용합니다. sshpass는 CentOS 7 의 경우, 기본 패키지에 포함되어 있지 않기 때문에, 사용하기에 앞서 yum으로 설치합니다.

# yum -y install sshpass*

설치가 완료되면, 아래와 같이 scp를 실행합니다.
sshpass -p [패스워드] scp [옵션] [원격지계정]@[원격지서버]:/[경로] [로컬서버 복사할 위치]


예제: 10.10.10.1 서버, ID: root, PW: test, /tmp/1.html 을 로컬서버 /home/backup으로 복사
sshpass -p test scp -r root@10.10.10.1:/tmp/1.html /home/backup

반응형
블로그 이미지

Runer

IT / 일상 / 먹방 / 꿀팁 / 유틸

,