クライアントが接続すると、サーバーは自動的にアウトバウンド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

おすすめ記事