Существует также "философское" различие, где в пакетах Debian можно задать вопросы и этим, заблокировать процесс установки. Плохая сторона этого - то, что некоторые пакеты заблокируют Ваши обновления, пока Вы не ответите. Хорошая сторона этого, также поскольку философское различие, на Debian основывал системы, когда пакет установлен, это настроено (не всегда, как Вы хотели бы), и выполнение. Не в основанных на Redhat системах, где необходимо создавать/копировать из/usr/share/doc /* конфигурационный файл значения по умолчанию/шаблона.
Возможно, что Ваш сервер закрывает соединения, которые неактивны слишком долго. Можно обновить любой клиент (ServerAliveInterval
) или Ваш сервер (ClientAliveInterval
)
ServerAliveInterval
Sets a timeout interval in seconds after which if no data has
been received from the server, ssh(1) will send a message through
the encrypted channel to request a response from the server. The
default is 0, indicating that these messages will not be sent to
the server. This option applies to protocol version 2 only.
ClientAliveInterval
Sets a timeout interval in seconds after which if no data has
been received from the client, sshd(8) will send a message
through the encrypted channel to request a response from the
client. The default is 0, indicating that these messages will
not be sent to the client. This option applies to protocol
version 2 only.
Обновить Ваш сервер (и перезапустить Ваш sshd
)
echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config
Или клиентский:
echo "ServerAliveInterval 60" >> ~/.ssh/config
Это обычно означает, что Ваша сеть (TCP) соединение была сброшена. Например, Ваш интернет-провайдер воссоединил Вас или что-то вроде этого.
Другая причина для "Поврежденного сообщения Канала" состоит в том, что другая машина пытается, используют тот же IP в качестве Вашего хоста.
Простой способ протестировать, если кто-то еще использует тот IP:
Для обнаружения, какие машины находятся в сети можно использовать этот заголовок вопроса о Unix & Linux: Как найти то, что другие машины подключены к локальной сети.
Альтернативным решением было бы использование mosh
- мобильной оболочки . В отличие от ssh, он соединяется через UDP и поддерживает роуминг. Вы можете начать сессию дома, приостановить работу ноутбука, взять его с собой на работу / друзей / везде, где есть интернет, отложить ноутбук и продолжать работать, как будто ничего не случилось. Это особенно полезно, если вы находитесь в паршивом интернет-соединении: Он показывает мгновенную обратную связь, если ваши нажатия клавиш не доходят до сервера и постоянно пытаются восстановить соединение.
Установка и настройка проста: Теперь он включен во все текущие дистрибутивы Linux (плюс несколько не-Linux) и координирует инициализацию сессии и аутентификацию через предыдущее соединение ssh. Поэтому, если вы можете подключиться через ssh user@server
, вы, скорее всего, сможете связаться с mosh, просто позвонив mosh user@server
, если пакеты mosh установлены на обоих концах.
Основной причиной сбоев соединения является то, что для работы mosh необходимо связаться с сервером через UDP-порт (диапазон по умолчанию: 60000-61000). Поэтому, если сервер находится за брандмауэром, вам в основном не повезет, если вы сами не сможете пробить в нем дырки (последствия для безопасности).
Если вы хотите иметь более длительный период соединения, то в клиенте добавьте:
echo 'ServerAliveInterval 30' | sudo tee -a ~/.ssh/config
echo 'ServerAliveCountMax 1200' | sudo tee -a ~/.ssh/config
ServerAliveCountMax
по умолчанию установлено значение 3. Поэтому, как только ServerAliveInterval
отправит 3 маленьких пакета информации на ваш сервер, он автоматически выйдет из системы. Установка в 1200 означает, что этот процесс должен произойти как минимум 1200 раз. Короче говоря, вы должны быть подключены как минимум 30*1200 секунд (10 часов).
У меня была та же проблема, но она не такая, как ожидалось. Если вы обнаружите, что в той же сети другой сервер пытается получить тот же IP-адрес, вы столкнетесь с той же проблемой.
Чтобы решить эту проблему, вам необходимо проверить, есть ли другие серверы, использующие тот же IP-адрес. Это можно сделать с помощью команды arp
.
Я использую Debian, поэтому вот пример команд, которые я использую, чтобы определить, действительно ли другой сервер использует тот же IP-адрес.
apt-get install arp-scan
arp-scan -I eth0 -l | grep 192.168.1.42
192.168.1.42 d4:eb:9a:f2:11:a1 (Unknown)
192.168.1.42 f4:23:a4:38:b5:76 (Unknown) (DUP: 2)
Вы заметите два набора MAC-адресов, использующих один и тот же IP-адрес. Избегайте конфликтов, устанавливая один на другой IP-адрес.
Я безуспешно возился с переменными ServerAliveInterval и ClientAliveInterval.
Наконец, после сравнения с машиной, у которой не было проблемы с сломанной трубой, я нашел директиву внизу/etc/ssh/sshd_config
:
KeepAlive yes
Помещение этого в конец моего проблемного сервера /etc/ssh/sshd_config
помогло.
Проверено для Ubuntu 20.04.1 LTS, Ubuntu 16.04.7 LTS.
Для меня это произошло потому, что я использовал ChrootDirectory
, который требует, чтобы весь заданный путь принадлежал root (, чего не было для меня ). Изменение разрешений для пути и перезапуск sshd устранили проблему.
~/.ssh/config
на моем Mac я должен создать его там, или это, где-то в другом месте? – AGamePlayer 06.09.2015, 06:40~/.ssh
) сначала. Такmkdir -p ~/.ssh; chmod 700 ~/.ssh; touch ~/.ssh/config
– Gert 07.09.2015, 09:43