Как закрыть сокет SSH

Я работаю над включением мультиплексирования сессий между двумя серверами. Я хочу закрыть все существующие сокеты для этого сервера (или IP-адреса) перед созданием нового и закрыть вновь созданный после завершения моей задачи. Это то, что я сделал до сих пор:

    remote_ip=192.168.20.2      #User inut
    remote_port=222

Можно создать сокет с помощью:

    SSHSOCKET=~/.ssh/remote_$remote_ip
    ssh -M -f -N -o ControlPath=$SSHSOCKET $remote_ip -p $remote_port

Может искать путь управления по:

ps x | grep $remote_ip | grep ssh | cut -d '=' -f 2
      /root/.ssh/remote_192.168.20.2 192.168.20.2 -p 222

Можно закрыть сокет по:

ssh -S /root/.ssh/remote_192.168.20.2 192.168.20.2 -p 64555 -O exit

Попытка закрыть сокет:

ps x | grep $remote_ip | grep ssh | cut -d '=' -f 2 | xargs ssh -S | xargs -i {} "-O exit"

Но я получаю:

Pseudo-terminal will not be allocated because stdin is not a terminal.

Пробовал с помощью -t и -tt:

        ps x | grep $remote_ip | grep ssh | cut -d '=' -f 2 | xargs ssh -Stt | xargs -i {} "-O exit"
        ssh: Could not resolve hostname /root/.ssh/remote_192.168.20.2: Name or service not known
        xargs: ssh: exited with status 255; aborting

Может кто-нибудь, пожалуйста, помогите мне с этим?

1 ответ

Если вы хотите разорвать каждое соединение с вашего компьютера на заданный удаленный IP-адрес и порт, вы можете сделать это следующим образом (используя fuserинструмент из пакета psmisc, включенный во все основные дистрибутивы Linux):

fuser -k -n tcp ",${remote_ip},${remote_port}"
Другие вопросы по тегам