클라이언트가 연결될 때 서버에서 아웃바운드 SSH 연결을 자동으로 시작합니다.

클라이언트가 연결될 때 서버에서 아웃바운드 SSH 연결을 자동으로 시작합니다.

내부 클라이언트가 지정된 IP 범위 내의 특정 포트에서 서버의 지정된 서비스에 연결할 때 서버에서 아웃바운드 SSH 연결을 자동으로 시작하려면 어떻게 해야 합니까? 연결이 이미 설정된 경우에는 연결을 시작해서는 안 됩니다.

Match연결이 이미 설정된 것처럼 이를 수행할 수 있는 비스크립트 방법은 없는 것으로 보이며 ssh가 다시 연결을 시도하는 것을 방지하기 위해 및 메소드 를 사용하여 이를 감지할 수 있는 방법이 없습니다 ForceCommand(또는 불필요하게 완전히 새로운 아웃바운드 SSH 세션을 여는 것). .

그래서 저는 다음과 같은 스크립트를 생각해냈습니다(이것은 아이디어를 설명하기 위한 초안일 뿐입니다).

#######auto_ssh-script.sh

####### iptables rule logging all new incoming, unestablished, never before seen connections

iptables -I INPUT -p tcp --sport 22 -m state --state NEW -m state !
--state ESTABLISHED -m state ! --state SEEN_REPLY -j LOG --log-prefix CONNECT

#######background script  --> read log and look for a match to string CONNECT 

cat /proc/kmsg | while read LOGGING 
do   
    LOG='echo "$LOGGING" | grep 'CONNECT' '   
    if ["$LOG" = ' ' ]  &  UP= 'echo alxw | grep ssh '
     if [ "UP" = ' '] then 
     fi  

ssh -p 22 <user>@<somewhere-out-there.com
echo "Connected"
done

더 좋은 방법은 없을까요? 그렇지 않다면 이 스크립트를 어떻게 개선할 수 있습니까?

답변1

기본적으로 다음에서 이 작업을 수행할 수 있습니다 sshd_config.

Match User user Address 192.168.100.0/24 LocalPort 22
  ForceCommand ssh some-other-ip

LocalPort 22일반 포트에서 서비스를 실행하는 경우에는 필요하지 않습니다. 클라이언트 IP 범위는 192.168.100.1- 192.168.100.254이고 사용자 이름은 입니다 user.

관련 정보