Перезапустить конкретный обратный туннель ssh?

Гарантируйте это AuthorizedKeysFile точки к правильному местоположению, использовать %u как заполнитель для имени пользователя:

# /etc/ssh/sshd_config
AuthorizedKeysFile /home/%u/authorized_keys

Может случиться так, что просто необходимо не прокомментировать строку:

AuthorizedKeysFile .ssh/authorized_keys

Следите за этим, необходимо перезагрузить ssh сервис для изменений для происхождения:

service sshd reload
6
25.09.2016, 02:17
2 ответа

Это покажет вам процессы, использующие туннель:

netstat -tnp | grep :2219 | awk '{print $NF}'

Я не могу воспроизвести ваши мертвые соединения, но это должно работать

for i in $(seq 2000 2030) do
  if !nmap -p $i localhost
    netstat -tnp | grep 2222 | grep '/ssh *$' | awk '{print $NF}' | sed -e 's#/ssh##' | xargs kill
  fi
end
1
27.01.2020, 20:30

Возможно, если вы измените свой клиентский скрипт, чтобы он вручную проверял статус обратного туннеля, сравнивая команду hostnameлокально и удаленно -через -туннельhostname(тот же комп):

#!/bin/bash

tunport=$(grep -o "[0-9][0-9][0-9][0-9]" /some/dir/id)
while true; do                    # -f (detached, foreground)
   ssh -i /some/dir/reverse-ssh.key -fnNT -R $tunport:localhost:22 rsuname@server.addr
   while true; do
      if [ "$(hostname)" = "$(ssh -p $tunport rsuname@$srvip hostname)" ]; then
         sleep 30
      else # kill local and remote process
          pkill -f "ssh.* -R $tunport:localhost"
          ssh rsuname@server.addr "lsof -ti tcp:$tunport | xargs -r kill"
          break # to tunnel re-init
      fi
   done
done

выглядит как пуленепробиваемое решение, ответы A и B, и устраняет необходимость в tcpkeepalive, параметрах liveInterval/countMax клиент/сервер и вмешательстве администратора.

1
27.01.2020, 20:30

Теги

Похожие вопросы