일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 14일 공부
- PostgreSQL
- Playwright
- 청첩장 모임
- MAPF
- 구조 패턴
- terraform
- 논문 정리
- amazon ecs
- leetcode
- AWS
- 오블완
- github
- Til
- Go-lang
- 경로 계획 알고리즘
- Rust
- 지표
- 디자인 패턴
- 생성 패턴
- 실용주의 프로그래머
- DevOps
- study
- AWS 비용 절감
- 신혼 여행
- ssh
- docker
- 도커 주의사항
- 티스토리챌린지
- Monthly Checklist
- Today
- Total
밤 늦게까지 여는 카페
ssh tunneling 네트워크 연결 끊겼을 때 복구 안되는 현상 - ExitOnForwardFailure 옵션 본문
안녕하세요 8월 초인데 정말 더운 날씨가 계속되고 있습니다.
폭염주의보가 끊이질 않네요 ㅋㅋㅋㅋ ㅜㅠ
오늘은 ssh tunneling을 사용하면서 겪었던 조금은 황당한(?) 문제를 기록하려고 합니다.
- 물론 제가 기능을 잘 모르고 사용해서 발생한 문제겠지만...
TL-DR
- ssh tunneling 명령어는 네트워크 연결이 끊겨도 종료되지 않음
- ExitOnForwardFailure 옵션을 사용해야만 네트워크가 끊겼을 때 ssh tunneling 명령어가 종료됨
1. ssh tunneling이란? - 퍼블릭 IP이 없어도 ssh로 접속할 수 있다!
SSH는 Secure Shell의 약자로 같은 네트워크의 컴퓨터로 접속할 수 있도록 도와주는 응용 프로그램 혹은 프로토콜을 일컫습니다.
ssh를 사용해서 서버에 접속해 보면 정말 편할 수가 없습니다. 그러다 보면 욕심이 생깁니다.
"집에 있는 내 컴퓨터에도 이렇게 접속할 수 있으면 정말 좋겠다!"
하지만 외부에서 ssh로 내 컴퓨터에 접속하기 위해서는 고정된 퍼블릭 IP가 필요합니다...
고정된 퍼블릭 IP가 있다면 문제가 없지만 그렇지 않은 경우에는 아쉬움만 남습니다 ㅜ
이런 아쉬움을 해소할 수 있는 방법이 바로 ssh tunneling이었습니다.
제 컴퓨터가 고정된 퍼블릭 IP를 가질 수 없는 상황에서도 AWS나 GCP의 인스턴스는 가질 수 있습니다.
ssh tunneling을 이용하면 고정된 퍼블릭 IP를 가진 서버 인스턴스를 경유해서 제 컴퓨터에 접속할 수 있게 됩니다.
ssh tunneling에 대한 자세한 설명은 한빛미디어의 글을 추천드립니다!
참고: SSH Tunneling 사용하기
2. 네트워크가 불안정한 환경에서는 어떨까?
ssh tunneling에 맛을 들은 저는 집 컴퓨터 뿐만 아니라 실험용 PC, 라즈베리 파이 등 다양한 머신들을 ssh tunneling으로 접속하였습니다.
하지만 와이파이로 연결된 실험용 PC나 라즈베리 파이는 인터넷 연결이 종종 끊기고는 했습니다.
- 랜선을 사용해서 인터넷 연결이 안정적인 집 컴퓨터와는 달랐죠 ㅜ
그래서 ssh tunneling 명령어를 계속 실행하면 되겠거니 하고 다음과 같은 명령어를 머신들에서 실행했습니다.
while true
do
ssh -fNT -R 5555:localhost:22 user@server.ip -i server.pem
done
이러면 네트워크 연결이 끊겨도 ssh tunneling 명령어가 재실행되니 문제를 해결했다고 생각했죠!
3. ssh 명령어가 죽지 않는다...
저의 착각이었습니다....
네트워크 연결이 끊기면 ssh 접속에는 실패하지만 ssh tunneling 명령어가 종료되지 않아서 재연결도 안됩니다 ㅜ
ssh 옵션 중 ServerAliveInterval, ServerAliveIntervalCountMax 라는 옵션들을 찾아서 이거다! 싶었지만 동작하지 않았습니다.
중간에 autossh라는 것을 찾았지만 머신들에 일일이 설치해야 한다고 생각하니 너무 귀찮아서 패스!
포기할까 하던 찰나에 ExitOnForwardFailure 옵션을 찾아서 문제를 해결할 수 있었습니다.
최종적으로 다음 명령어를 실행하여 문제를 해결했습니다!
while true
do
ssh -fNT -R 5555:localhost:22 oExitOnForwardFailure=yes user@server.ip -i server.pem
done
'유용한 툴 > ssh' 카테고리의 다른 글
ssh tunneling 사용 방법 - 이것만 있으면 가벼운 노트북으로도 원격 개발 가능! (0) | 2024.08.12 |
---|---|
SSH 사용법(xshell) (0) | 2022.08.04 |
SSH 키인증(xshell, 비밀번호 저장) (0) | 2022.08.04 |
SSH 사용법(윈도우10) (0) | 2022.07.10 |