MobaXterm 설치
https://mobaxterm.mobatek.net/download.html
AWS에 접속하여 EC2 인스턴스를 생성하고 AWS에서 제공해주는 인스턴스 연결 기능을 사용하면 아래와 같은 에러를 받을 수 있습니다.
SSH 클라이언트에서 명령어를 작성하여 접속을 하려하면 Connection timed out 을 받을 수 있습니다.
$ ssh -i <pem key 위치> ec2-user@<ip 주소>
ssh: connect to host port 22: Connection timed out
원인
저의 경우에는 회사에서 22번 포트를 막아놔서 문제였습니다. 구글링을 하던 도중 공유기로 인해 접근이 안된다는 포스팅도 봤습니다.
저는 AWS에서 제공하는 사용자 데이터를 활용하여 해결하였습니다.
사용자 데이터는 EC2 Linux 인스턴스를 다시 시작할 떄마다 사용자 데이터의 작성한 스크립트를 실행해주는 기능입니다.
ssh 포트는 기본으로 22번 포트에서 실행됩니다.
아래의 파일에 들어가 Port 22를 원하는 포트로 변경하면 됩니다.
$ sudo cat /etc/ssh/sshd_config
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
....
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
저 sshd_config 안에 Port를 원하는 Port로 수정해야 합니다.
#Port 22 -> Port 10000
리눅스 명령어중에 perl이라는 명령어를 사용해 #Port 22를 Port 10000으로 치환해야 합니다.
#perl -pi -e 's/원본문자열/바꿀문자열/g' <파일명>
-p 지정한 파일을 대상으로 작업
-i 원본파일을 결과 파일로 대체
-e 주어진 Perl 명령 실행
$ perl -pi -e 's/^#?Port 22$/Port 10000/' /etc/ssh/sshd_config
해당 명령어로 실행 후 restart 해주면 된다
$ service sshd restart || service ssh restart
이 내용을 정리해서 하나의 스크립트로 만들면
#!/bin/bash -ex
perl -pi -e 's/^#?Port 22$/Port 10000/' /etc/ssh/sshd_config
service sshd restart || service ssh restart
이 내용을 사용자 데이터에 넣으면 된다.
인스턴스 우클릭 > 인스턴스 설정 > 사용자 데이터 편집
작성 후 저장
다시 쉘에서 기본 포트 22가 아닌 변경 한 포트 번호로 작성하고 실행하면 Connection timed out이 뜨는데,,
$ ssh -i <pem key 위치> ec2-user@<ip 주소> -p <포트 번호>
$ ssh -i <pem key 위치> ec2-user@<ip 주소> -p 10000
ssh: connect to host port 22: Connection timed out
인바운드에도 포트 번호 10000번을 추가해줘야 한다.
접속 성공!
'n년차 개발자' 카테고리의 다른 글
AWS EC2 인스턴스에 ES 설치 후 ELB, ROUTE53 적용 하기 (0) | 2022.07.15 |
---|---|
AWS Lambda, S3, EventBridge, Cloude Watch를 사용하여 EC2 AUTO STOP 적용하기 (JAVA) (0) | 2022.07.14 |
로드밸런싱, L2, L3, L4, L7 스위치, HAProxy 란? (0) | 2021.06.06 |
CDN(Content Delivery Network) 콘텐츠 전송 네트워크 란 (0) | 2021.05.14 |
HMAC (Hash-based Message Authentication Code) 이란 (0) | 2021.01.04 |