리눅스의 scp 명령어를 이용하면 사용 가능

하지만 비밀번호라던지 시스템이 주기적으로 작업을 하기 위해서는 추가 설정이 필요

아래의 작업은 CentOS7를 기반으로 작성


1. 소스 EC2 (서버1이라고 지칭)에서 수행

1.1 scp, ssh, sftp, rsync를 수행하는데 필요한 keypair 생성

1.2 쉘로 로그인 해서 아래의 명령어 수행 (생성시 passphrase에 비밀번호 입력금지)

ssh-keygen -t rsa

1.3 생성된 파일은 보통 /root/.ssh/id_rsa 또는 /home/ec2-user/.ssh/id_rsa 에 위치


2. 타켓 EC2(서버2라고 지칭)에서 수행

2.1 "sshd_config" 파일 확인 (/etc/ssh/sshd_config에 위치)

2.2 sshd_config파일에서 아래 2줄 주석 제거 (EC2 사용자로 로그인했을 시 sudo su 사용)

RSAAuthentication yes

PubkeyAuthentication yes

2.3 서버2에서 authrorized_keys 파일 찾기

/home/ec2-user/.ssh/authorized_keys 또는 /root/.ssh/authorized_keys 에 위치

2.4 서버1의 id_rsa.pub 파일의 내용을 서버2의 authorized_keys에 붙이기 (줄 마지막에 엔터키를 치고 붙이면 됨)

서버1의 id_rsa.pub 파일은 /home/ec2-user/.ssh/id_rsa.pub 또는 /root/.ssh/id_rsa.pub 에 위치


3. 파일이 정상 복사 되는지 확인

scp "대상파일" "아이디"@"서버2 IP":/"복사 위치"

예) scp test1.txt ec2-user@ip-10-252-1-56.us-west-2.compute.internal:/home/ec2-user/

ec2-user@ip-10-252-1-56.us-west-2.compute.internal은 서버2의 private DNS이기 때문에 AWS Console에서 확인할 수 있음

접속 시 "Are you sure you want to continue connecting"을 물어보는데 여기서 yes를 하면 /root/.ssh/known_hosts에 기록이 됨


4. 이슈

보안: IP만 알면 무작위로 복사할 수 있지 않을까? (더 확인해봐야 하겠지만 rsa key를 서버2에 추가하기 때문에 제한적으로 접근을 막을 수 있는 것으로 보여짐 또는 restrict ssh/scp access to specific ip addresses 에서 언급한 것처럼 /etc/hosts.allow에 특정 IP만 허용해 줄 수 있을 것 같음) - sshd: IPADDRESS, IPADRRESS


5. 추가정보

리전(region)이 다른 경우 private DNS를 사용할 수 없음

대신 public DNS를 사용하면 됨


[참고] How to do SCP from one EC2 Instance to another EC2 Instance

Posted by bboks.net

댓글을 달아 주세요