보안에 민감한 문서 (application.yml) 윈도우환경에서 리눅스(ubuntu) 서버로 전송하기 (pscp 사용)
발단 |
최근 서비스를 리눅스 서버에 (aws ec2) 배포를 하려하는데 실수로 aws 키 정보를 같이 github에 올려버렸습니다.
오래지나지 않아 aws쪽으로부터 key 유출에 대한 피드백 메일이 왔습니다.
정확히는 aws key 정보가 있는 application.yml 파일을 github에 push해버려서인데 그래서 이 부분을 개선하기 위해
방법을 모색하여야했습니다.
정리 |
환경
OS : windows 10 Home 22H2
PowerShell 버전 : 5.1.19041.2673
Linux Ubuntu (aws ec2) : 22.04
제가 채택한 방법으로는 application.yml 같은 보안적인 요소가 중요한 설정파일들을 리눅스 서버로 직접적으로 통신해 전달하는 것 입니다. 이 중에도 여러 방법들이 있지만 제가 채택한 통신 프로그램으로는 pscp가 되겠습니다.
pscp는 PuTTY Secure Copy Protocol의 약자로 원격 서버에 안전하게 파일을 복사하는데 사용됩니다.
특징적인 부분으로는 SSH 프로토콜을 사용하여 파일 전송을 보호하고, 안전한 방식으로 데이터를 암호화합니다.
이러한 특성탓에 보안에 민감한 파일들을 전송하는데 있어서 적합하다 판단하였고 채택했습니다.
사용방법으로는 다음과 같습니다.
우선 다음 홈페이지에서 pscp를 다운받습니다.
https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
Download PuTTY: latest release (0.78)
This page contains download links for the latest released version of PuTTY. Currently this is 0.78, released on 2022-10-29. When new releases come out, this page will update to contain the latest, so this is a good page to bookmark or link to. Alternativel
www.chiark.greenend.org.uk
이후 pscp가 저장된 폴더로 이동한 후 다음과 같은 명령을 통해 전송합니다.
저는 윈도우 환경의 PowerShell에서 진행하였습니다.
일반적으로는 다음 명령을 사용합니다.
pscp [옵션] [원본 파일/디렉토리] [대상 호스트:대상 경로]
ex)
pscp c:\temp-project\application.yml zoso@127.0.0.1:/home/zoso/temp-project/src/main/resources
저의 경우 리눅스 서버 통신을 위해 RSA key를 사용한 ssh를 사용합니다. 그래서 pscp 시 저의 개인키를 같이 전달해줘야 했습니다. 그럴땐 다음과 같이 -i [개인키의 경로] 옵션을 추가하여 실행하면 됩니다.
pscp -i c:\users\zoso\private-key.ppk c:\temp-project\application.yml zoso@127.0.0.1:/home/zoso/temp-project/src/main/resources
여기까지하면 무사히 통신이 가능하지만 저의 경우 이 과정에 달하기까지 오류가 한 가지 더 있었습니다.
aws ec2 인스턴스를 만들 때 받았던 개인키(pem)로는 old format이라는 이유로 pscp에서 개인키 전달이 불가능 했습니다.
그래서 최신 포맷의 키로 바꿔야 했습니다.
다음 명령으로 손 쉽게 구할 수 있었습니다.
ssh-keygen -p -m PEM -f C:\Users\zoso\private-key.pem
의견 |
다른 분들은 어떻게 이러한 보안에 에민한 파일들을 전달하지 몰라 , 저는 이렇게 pscp란 프로그램을 사용했습니다.
다른 더 좋은 방법이 있는지 많이 물어보고 더 좋은 방법이 있다면 또 글을 쓰겠습니다.
긴 글 읽어주셔서 감사합니다.
부족한 점이 있다면 부디 알려주시면 감사하겠습니다.