리눅스

ssh 터널링 자동 실행

미도반 2022. 1. 21. 16:10

아래 설정을 하기 전에 해야할 일.

- 경유지 서버에 출발지 Server IP와 22 포트 방화벽이 허용되어 있어야 함.

 

■ 출발지 Server 

아래 명령어를 ssh터널링을 실행할 계정에서 설치하자. 난 root에서 했다.

예를 들어 "ssh -fN -L 29237:129.200.9.11:9237 crizen@121.125.79.134" 이 명령어를 crizen 계정에서 실행할지 root에서 실행할지 결정하고 해당 계정 접속 후 아래 명령어를 실행해야 한다.

 

[root@localhost ~]# ssh-keygen -t rsa

1. 명령어 실행

2 ~ 4. 그냥 Enter

 

 

명령어 실행한 계정 홈디렉토리 밑에 .ssh 

[root@localhost ~]# ll .ssh/

 

 

[root@localhost ~]# scp ~/.ssh/id_rsa.pub crizen@175.115.52.78:~/.ssh/authorized_keys

 

■ 경유 Server

 

ssh 공개키 확인

[root@localhost ~]# vim .ssh/authorized_keys

 

아래 내용을 보면 출발지 Server의 root 계정만 접속가능함.

 

 

■ 출발지 Server

rsa 키는 계정별로 생성되며 계정에 따라 접속이 달라짐

[root@localhost ~]# ssh 경유지IP

 

 

 

 

※ ssh 자동실행 스크립트

#!/bin/sh

# autossh Tunneling by wglee 2022.01.21

LOCALE_PORT=30018

REMOTE_USER=crizen
REMOTE_HOST=175.115.52.78

DESTINATION_PORT=30018
DESTINATION_HOST=10.94.50.40

YMD_HMS_BASIC=`date +%Y%m%d_%H%M%S`
YMD_BASIC=`date +%Y%m%d`
LOG_FILE=/root/logs/autossh_$YMD_BASIC.log


{
# $COMMAND is the command used to create the reverse ssh tunnel
COMMAND="ssh -fN -L ${LOCALE_PORT}:${DESTINATION_HOST}:${DESTINATION_PORT} ${REMOTE_USER}@${REMOTE_HOST}"

CNT=$(ps -ef | grep "$COMMAND" | grep -v grep | grep -v tail | wc -l)

if [ $CNT -eq 0 ]
then
        $COMMAND
        echo "ssh Tunneling restart $YMD_HMS_BASIC"
else
        echo "ssh Tunneling is already running. $YMD_HMS_BASIC"
fi
} >> $LOG_FILE

 

 

 

※ crontab 설정

# autossh Tunneling
*/10            8-12            *               *               1-5                     /root/autossh.sh
*             12-20/1         *               *               1-5                     /root/autossh.sh

 

 

 

 

 

 

 

※ 참고

https://system-monitoring.readthedocs.io/en/latest/ssh.html