ssh_exchange_identification: Соединение закрывается удаленным хостом (не использующий hosts.deny)

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

С файловой системой ACLs можно предоставить www-data пользовательский доступ к определенному каталогу, даже при том, что нормальные полномочия не позволяют его.

Так, например,

setfacl -R -m user:www-data:rwx wp-content/plugins
setfacl -d -R -m user:www-data:rwx wp-content/plugins

Первое предоставление команды www-data read+write+execute к wp-content/plugins и все в нем (рекурсивно). Вторые наборы команд полномочия по умолчанию так, чтобы любые новые файлы и папки создали в wp-content/plugins будет иметь указанный ACL (и таким образом будет read+write+execute www-data).

78
15.10.2016, 03:51
12 ответов

Первоначально опубликовано на Ask Ubuntu

Если вы исключили какие-либо «внешние» факторы, следующий набор шагов обычно помогает сузить его. Таким образом, хотя это не дает прямого ответа на ваш вопрос, это может помочь отследить причину ошибки.

Устранение неполадок sshd

Что я считаю очень полезным в таких случаях, так это запускать sshd , не позволяя ему демонизировать. В моем случае проблема заключалась в том, что ни syslog , ни auth.log не показали ничего значимого.

Когда я запустил его с терминала, я получил:

# $(which sshd) -Ddp 10222
/etc/ssh/sshd_config line 8: address family must be specified before ListenAddress.

Намного лучше! Это сообщение об ошибке позволило мне увидеть, что не так, и исправить это. Ни один из файлов журнала не содержал этого вывода.

NB: по крайней мере в Ubuntu $ (which sshd) - лучший способ удовлетворить sshd требование абсолютного пути. В противном случае вы получите следующую ошибку: sshd re-exec требует выполнения с абсолютным путем . -p 10222 заставляет sshd прослушивать этот альтернативный порт, переопределяя файл конфигурации - так, чтобы он не конфликтовал с потенциально запущенными экземплярами sshd .Обязательно выберите здесь свободный порт.

Наконец: подключитесь к альтернативному порту ( ssh -p 10222 user @ server ).

Этот метод много раз помогал мне в поиске проблем, будь то проблемы аутентификации или другие типы. Чтобы получить действительно подробный вывод в stdout , используйте $ (which sshd) -Ddddp 10222 (обратите внимание на добавленный dd для увеличения подробности). Для получения дополнительной информации об отладке проверьте man sshd .


Основным преимуществом этого метода является то, что он позволяет вам проверять конфигурацию sshd без необходимости перезапуска sshd на порту по умолчанию. Обычно это не должно мешать существующим SSH-соединениям, но я видел это. Таким образом, это позволяет проверить файл конфигурации до - потенциально - отключения доступа к удаленному серверу (например, у меня есть это для некоторых VPS и даже для физических серверов, где мне нужно доплатить, чтобы получить доступ по внеполосному каналу). к машине).

61
27.01.2020, 19:30

У вас также может быть хост, память которого настолько сильно фрагментирована, что он не может выделить страницу в непрерывную память для разветвления процесса для размещения сеанса SSH.

В таком случае вы можете получить одно из сообщений:

ssh_exchange_identification: read: Connection reset by peer

или:

Connection closed by aaa.bbb.ccc.ddd

в зависимости от того, как далеко уйдет хост, прежде чем он выйдет из строя.

Если фрагментация памяти является очевидной причиной, решение состоит в том, чтобы получить доступ к серверу с помощью других средств и перезапустить некоторые из соответствующих служб. Я обнаружил, что Apache и MySQL являются виновниками виртуальных машин, поскольку виртуальные машины не имеют раздела подкачки. В противном случае перезагрузите хост.

10
27.01.2020, 19:30

На всякий случай, потому что это случилось со мной. Убедитесь, что у вас есть SSHD работает на хосте!

Это глупое отказ, но может быть действительно ваша проблема.

6
27.01.2020, 19:30

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

4
27.01.2020, 19:30

Я столкнулся с ssh_exchange_identification: read: Connection reset by peer проблема в скрипте, который запускает 16 или более ssh сессий в цикле. sshd, очевидно, не успевает; добавление короткого сна решило мою проблему:

for i in $(seq 32)
do
    ssh -f root@$HOST "./test_server -p $(expr $BASE_PORT + $i)" > svr${i}.out
    # for > 8 connections, ssh has ssh_exchange_identification issues
    sleep 0.1
done
5
27.01.2020, 19:30

Mi caso se configuró erróneamente como proxy de socket (que no funciona ). Obtuve exactamente la misma salida ssh -vvv y un registro sshd vacío.

-1
27.01.2020, 19:30

Desde con CentOS Linux release 7.4.1708 (Core)con OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017detrás de una conexión que no filtra los puertos que tenía:

ssh_exchange_identification: Connection closed by remote host

¡Y resultó que mi Raspberry Pi estaba apagada!

Estaba pensando que un host no encendido habría arrojado el error "Sin ruta al host". El Raspberry Pi está detrás de mi enrutador ISP, por lo que probablemente sea el que estaba cerrando la conexión.

Luego repetí el experimento (intentando conectarme a una Raspberry Pi apagada )desde otra conexión a Internet que tampoco filtraba los puertos con Debian Stretch con OpenSSH_7.4p1 Debian-10+deb9u3, OpenSSL 1.0.2l 25 May 2017y esta vez obtuve lo esperado:

No route to host

-1
27.01.2020, 19:30

Или вы могли сделать то же, что и я прошлой ночью, и удалить /var/empty. По-видимому, этот каталог и его разрешения необходимы для работы sshd, и он не будет переделывать каталог при перезапуске. /etc/init.d/sshdне перезапустится, и systemd не скажет вам, почему.

Я обнаружил проблему, запустив sshd на переднем плане:

# /usr/sbin/sshd -Dd
  Missing privilege separation directory: /var/empty/sshd

Перестройка каталогов решила проблему в моем случае:

drwxr-xr-x. root root  /var/empty
drwx--x--x. root root  /var/empty/sshd

Примечание для Linux-программистов :Критически важные вещи в /var/empty... правда???

3
27.01.2020, 19:30

Ошибка ssh_exchange_identification: Connection closed by remote hostможет возникать по неизвестным причинам. Когда я использовал код Visual Studio . Та же ошибка произошла, когда я попытался получить данные из удаленного репозитория с помощью команды git pull.

Я просто закрыл встроенный терминал и открыл терминал Ubuntu и снова потянул. И это было успешно

В большинстве случаев проблема решается перезапуском системы

0
27.01.2020, 19:30

Я получил сообщение об ошибке ssh_exchange_identification: Connection closed by remote hostпри попытке подключиться к SSH :Я выполнил переадресацию удаленного порта для SSH-порта 22 моего локального компьютера, чтобы иметь временный доступ к нему с удаленного сервера в Интернете.

На самом деле ошибка была просто отображена, потому что я не помнил, что отключил службу SSH при запуске, поэтому мне пришлось запустить службу SSH на моем локальном компьютере:sudo service ssh start.

2
27.01.2020, 19:30

Аналогичная ошибка возникала при попытке подключиться по ssh от пользователя root к недавно созданному контейнеру:

ssh root@localhost -p 8022  
  ssh_exchange_identification: Connection closed by remote host

# local port 8022 is redirected to container ssh port 22

Судя по всему, это произошло потому, что у пользователя(«root» в моем случае)не было пароля .

Как только я добавил пароль пользователя и перезапустил sshd (внутри контейнера):

echo 'root:<PASSWORD>' | sudo chpasswd
sudo service ssh restart

Затем я мог подключиться к контейнеру по ssh.

0
28.01.2020, 07:23

Если вы находитесь в среде, где промежуточное оборудование, скажем, бастион, ретранслирует ваш SSH, это может означать, что бастион завис, потому что не смог связаться с удаленным хостом. Естественно, они не захотят отображать эту информацию и позволят вам попытаться обнаружить удаленные хосты.

-1
23.04.2020, 20:34

Теги

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