Почему ssh сессия все еще активна, если я “уничтожил” ssh сервер?

Я прямо сейчас встретился с этим после соединения с Ubuntu 14.04 через ssh, и Вы изменяете sshd_config в недопустимое состояние так, чтобы service ssh reload заставит сервер прекращать слушать, но не закроет активные ssh сеансы, которые я установил.

Для репродуцирования шагов, я сделал:

  1. Подключение к ssh серверу:

    ssh host
    
  2. Изменение /etc/ssh/sshd_config в недопустимое состояние, например, набор:

    GatewayPorts 0.0.0.0:62222
    
  3. Перезагрузите конфигурацию сервера

    sudo service ssh reload
    
  4. Проверьте, что соединение SSH установило на шаге 1), все еще активно, и можно ввести что-либо, что Вы хотите.

  5. Не закрывайте установленное соединение и попытку соединиться с сервером еще раз от другого терминала:

    ssh host
    

И в моем случае, у меня есть это сообщение:

ssh: connect to host IP_ADDR port SSH_PORT: Connection refused

Это означает, что ssh сервер больше не слушает входящие соединения, но так или иначе волшебно все еще выполняет и обрабатывает мое установленное соединение.

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

Таким образом, вопрос: это - желаемое поведение? Какова исходная цель такой реализации?

btw, я заметил, что ssh сервер в этом случае натурален из непоследовательного состояния:

$ service ssh reload
reload: Job is not running: ssh
$ service ssh start
start: Job is already running: ssh

Так, для возрождения сервера, я должен был работать:

service ssh reload

Вероятно, важные примечания:

  1. Сервер Ubuntu был настроен Mail-in-a-Box v0.20, и никакие дальнейшие изменения не были внесены.
  2. Поставщик сервера (DigitalOcean) настроил для меня еще два правила в sshd_config:
    • ClientAliveInterval 120
    • ClientAliveCountMax 2
2
задан 20 November 2016 в 12:44

1 ответ

Поскольку пользовательские соединения, выполненные в различных процессах. Это - довольно полезная функция.

  • Это предотвращает Ваш от блокировки себя из Вашего сервера с плохой конфигурацией
  • , Это намного более отказоустойчиво: Отказ сингла (пользователь), процесс не уничтожает все другие соединение
  • , Это дает намного лучшую производительность, чем единственный процесс, обрабатывающий все соединения
  • , Это намного более безопасно: пользователи действительно разделяются к различным процессам.

Это - обычная практика, чтобы записать серверам TCP этот путь. Это несколько отличается, чем Apache, например, который порождает несколько рабочих, которые снова используются для последующих соединений.

2
ответ дан 2 December 2019 в 03:43

Другие вопросы по тегам:

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