들어가는 말
기존에 Putty 를 사용해서만 AWS EC2 인스턴스 터미널로 접근했습니다. 이는 학습목적으로 OPEN SSH 를 이용해 접근해보는 시간을 가졌고, 이 과정에 대해서 정리한 포스트입니다.
WSL 설치하기
해당 사이트(https://learn.microsoft.com/ko-kr/windows/wsl/install) 에 접속하여 WSL2 를 설치해줍니다.
사실 설치를 하지 않아도 최신 PowerShell 에서는 OpenSSH 설치를 지원해주기 때문에 리눅스 가상환경을 윈도우 환경에서 접속하게 해주는 WSL 이 꼭 필요하지 않을 수 있습니다. 다만 저의 경우에는 문제가 있었기 때문에 해당 WSL2 를 같이 설치해주었습니다.
Open SSH 설정
window powershell 에서 OpenSSH 서버 활성화
powershell 에 접속 하신 후 아래 명령어를 입력해 줍니다. 참고로 SSH란 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템 에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 프로그램입니다.
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
1분 ~ 2분 정도 대기하면 아래 화면을 확인할 수 있습니다.
sshd 서비스 실행하기
이제 아래 명령어를 입력하여 sshd 서비스를 실행합니다. 참고로 해당 서비스는 ssh 연결 및 실행 등의 요청이 올 때 까지 대기하다가 해당 요청들이 오면 연결을 수신해주는 백그라운드 서버라고 이해하시면 됩니다. 즉, SSH 를 뒤에서 받쳐주는 역할을 해주며, 해당 서비스가 실행되어 있지 않다면 SSH 이 실행되지 않습니다.
Start-Service sshd
참고로 부팅 시 자동으로 실행되도록 해주고 싶다면 추가적인 옵션을 붙여서 실행해 줍니다.
Set-Service -Name sshd -StartupType 'Automatic'
SSH 방화벽 설정 확인하기
그 후 아래 명령어를 입력한 후 예시와 동일한 결과가 나타난다면 성공입니다. 특히, Enabled 가 True 로 지정되어 있어야 합니다.
Get-NetFirewallRule -Name OpenSSH-Server-In-TCP
SSH 에 정상접속 되는지 확인하기
powershell 에 ssh 라고 입력해줍니다.
ssh
입력 후 usage 와 같이 사용설명 관련 로그가 뜬다면 정상적으로 ssh 접속이 가능하다는 의미입니다.
만일 명령어가 없다고 나온다면, SSH Client 를 활성화 해줍니다. 그 후에 해보시면 정상적으로 실행될 것입니다.
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
AWS EC2 접속하기
기존 .PPK 파일을 .PEM 파일로 변경하기
저의 경우 기존에는 Putty.exe 를 통해 SSH 접속을 했기 때문에 .ppk 파일을 암호화키 및 공개키로 사용했었습니다 .따라서 해당 키를 OpenSSH 에서 사용할 수 있는 키로 변경해주어야 합니다.
우선 해당( https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html ) 로 접속 하신 후 puttygen.exe 파일을 찾아서 설치해줍니다. 대부분 최상단에 있는 링크 입니다.
그 후 해당 파일을 실행하고, Coversions -> import key -> Export OpenSSH key 를 순서대로 눌러줍니다.
import key 로 .ppk 파일을 가져온 뒤 Export OpenSSH key 를 클릭하여 .ppm 키로 변환 해주는 겁니다.
2번의 내보내기 시 키이름을 지정하고, 확장자를 .pem 으로 지정하고, 키를 저장하고 사용할 위치에 저장해 줍니다.
WIndow Open SSH 에서 AWS EC2 접속하기
모든 준비가 완료 되었다면, pscp 로 접속하는 방식과 동일하게 입력해 줍니다. 참고로 .pem 파일이 있는 경로에서 아래 명령어를 입력해야 합니다. 저 같은 경우 관리자(Administrator) 에 임시적으로 모두 모아 두었습니다.
ssh -i [파일이름].pem ec2-user@[ec2의 Public IP 주소 혹은 탄력적 IP 주소]
아래와 같이 정상적으로 리눅스 환경문구가 나온다면 성공한 것입니다.
참고로 종료해서 원래 window powershell 로 돌아오고자 한다면 exit 을 입력하고 나와 주시면 됩니다.
번외) Open SSH 에서 SCP를 통해 EC2 인스턴스로 파일 전송하기
이제 실제 배포가 가능한지 테스트 해보면서 해당 포스트를 마무리할까 합니다.
앞서 전송하기 위한 테스트 파일로 test.txt 파일을 만들어 줍니다. 해당 파일도 앞서 .pem 과 동일한 위치에 두도록 합시다.
여기서 SCP(Secure CoPy)란 SSH를 사용하여 로컬 호스트와 원격 호스트 간에 파일을 안전하게 복사하거나 이동하는 명령어 입니다. 즉, 이 명령어는 SSH 서버가 활성화된 상태에서 사용할 수 있는 원격 파일 전송을 위한 도구라고 이해하면 됩니다.
그럼 해당 명령어를 사용하여 파일을 전송해 봅시다. 아래와 같은 형식으로 명령어를 입력해주기만 하면 됩니다.
scp -i [키이름].pem [파일이름].[확장자] ec2-user@[Public IP 주소]:/home/ec2-user
# scp -i wise-pair.pem test.txt ec2-user@204.5.53.3:/home/ec2-user
전송 후 아래와 같이 다운로드 표시가 뜨고 100% 가 되었다면 성공적으로 전송이 된 것입니다.
그 후 EC2 인스턴스에서 /home/ec2-user 경로로 접속 후 ls 명령어를 입력해 주면 해당 경로에 test.txt 파일이 정상적으로 있다면 성공입니다.
# /home/ec2-user 경로에서
ls
다행히 정상적으로 test.txt 파일이 전송되어 있는 것을 확인 하였습니다.
나가는 말
오늘은 윈도우 환경의 Putty 기반의 SSH 환경에서 OpenSSH 로 AWS EC2 인스턴스로 접속하는 과정과 번외로 scp 를 사용해서 EC2 인스턴스에 파일을 업로드 하는 방법에 대해서 간략하게 정리해보았습니다.
이 글이 도움이 되었길 바라며 글을 줄여보겠습니다.
참고자료
window 환경에서 OpenSSH 접속( https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/openssh.html )
ppk 를 pem 으로 (https://thekoguryo.github.io/oci/chapter03/5/3/)
'프로젝트 > 나만의명언집' 카테고리의 다른 글
ec2 재부팅 시 사이트 접속 불가 (PostgreSQL, Nginx) (0) | 2024.07.31 |
---|---|
[나만의 명언집] GithubActions 을 통한 CI 와 AWS CodePipeline (CodeDeploy)을 통한 CD 구축 | NextJS 프로젝트를 EC2 인스턴스로 배포하는 과정 (0) | 2024.06.21 |
[나만의 명언집] 트러블 슈팅 모음집 ③ | 14 ~ 16 (1) | 2024.06.18 |
크롤링이 되긴 되었는데.. (0) | 2024.04.14 |
[나만의 명언집] 이메일 본인인증 기능 구현(With Redis 클라우드 & NextJS 서버리스) -> 핵심만 (0) | 2024.04.14 |