Remote SSH tunneling

Yongsang Yoon·2022년 1월 4일
0

Linux

목록 보기
3/7

환경 설정

  • Server, Client 양쪽 모두 open-ssh 환경 설치
  • 포트포워딩하기 (서버쪽, 공유기쪽 모두)

sshd 재시작하기

systemctl restart ssh
/etc/init.d/ssh restart
service ssh restart

스크립트 만들기

remote ssh tunneling

remote ssh는 서버 A가 방화벽에 때문에 외부에서 접근이 어려울 때 쓴다.
먼저 내부서버A와 외부서버B 사이에 연결이 된다면 게스트C는 B를 통해 A로 우회 접근 할 수 있다.
명령어는 다음과 같다.

ssh -fNT -g -o ServerAliveInterval=60 -R :32773:localhost:22  nas_peter@xiah.duckdns.org -p 12255
  1. A에서 B로 PORT 32773 , HOST xiah.duckdns.org, USER nas_peter로 접속
  2. HOST xiah.duckdns.org에 PORT 12255로 요청이 들어오면, localhost:22 (서버A)로 연결을 forwarding 하기.

자동실행시키기

#! /bin/bash
is_running=`ps -ef | grep -v "grep" | grep "ssh -fNT -g" | wc -l`
date=$(date "+%Y-%m-%d_%H:%M:%S")

if [ "$is_running" == "0"  ]; then
echo "${date} | rssh to be connected" >> 
ssh -fNT -g -o ServerAliveInterval=60 -R :32773:localhost:22  nas_peter@xiah.duckdns.org -p 12255
/home/peter/workspace/scripts/check.log 2>&1
else
echo "${date} | rssh still running now" >> /home/peter/workspace/scripts/check.log 2>&1
fi

실행중인 프로세스 중ssh -fNT -g를 포함하는 프로세스의 갯수를 세어 is_running에 저장함.
조건문으로 갯수를 확인하여 로그파일에 남긴다.
2>&1 은 기존의 로그파일에 추가하여 작성한다는 뜻. 이게 없으면 덮어쓰기 를 수행한다.

profile
I'm a student

0개의 댓글