Подтвердить что ты не робот

Ошибка записи: сломанная труба

У меня есть безголовый сервер Ubuntu. Я выполнил команду на сервере (snapraid sync) через SSH с моего Mac. Команда заявила, что потребуется около 6 часов, поэтому я оставил ее на ночь.

Когда я пришел сегодня утром, Терминал на Mac сказал: "Запись не удалась: сломанная труба"

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

4b9b3361

Ответ 1

Это должно решить проблему для версии Mac osX: 10.8.2

добавить:

ServerAliveInterval 120
TCPKeepAlive no

к этому файлу:

~/.ssh/config

Или, если вы хотите, чтобы это было глобальное изменение в клиенте SSH, этот файл

/частный/и т.д. /ssh _config

"ServerAliveInterval 120" в основном говорит "ping" серверу с NULL-пакетом каждые 120 секунд, а "TCPKeepAlive no" означает не устанавливать параметр сокета SO_KEEPALIVE (поскольку вам не нужно его с уже установленным ServerAliveInterval, и, по-видимому, он "подменяет" или какой-то нечетный).

У серверов одинаково есть что-то, что они могли бы установить для одного и того же эффекта (ClientKeepAliveInterval), но обычно у вас нет контроля над этими настройками.

Ответ 2

Для этого вы можете использовать "screen". Просто подключитесь к серверу через SSH, запустите сеанс экрана с помощью команды "screen", запустите свою команду и отключите (не выходите из сеанса экрана). Когда вы думаете, что ваша команда уже выполнена, вы можете подключиться к серверу и подключиться к сеансу экрана, где вы можете увидеть результат выполнения/прогресс команды (в случае, если это необходимо).

Подробнее см. "man screen".

Ответ 3

Это должно решить проблему для ubuntu и linux mint добавить:

ServerAliveInterval 120
TCPKeepAlive yes

в /etc/ssh/ssh _config файл

Ответ 4

Вместо экрана я бы рекомендовал tmux, (возможно) лучше конкурента для показа

tmux new-session -s {name}

Эта команда создает сеанс. В любое время после этого вы хотите подключиться:

tmux a -t {name}

Ответ 5

существуют два решения

  • Чтобы обновить сервер и перезапустить сервер sshd

echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config

  1. Чтобы обновить клиент

echo "ServerAliveInterval 60" >> ~/.ssh/config

Ответ 6

jeremyforan ответ правильный, однако я обнаружил, что если вы пытаетесь использовать scp, необходимо явно указать его на конфигурационный файл, сконфигурированный, как описано, он, похоже, не подчиняется нормальному иерархия конфигурации. Например:

scp -F ~/.ssh/config myfile [email protected]:~

работает, в то время как исключение -F по-прежнему приводит к ошибке разбитого трубопровода.

Ответ 7

После попытки изменить многие из вышеперечисленных параметров в sshd_config (ClientAliveInterval, ClientMaxCount, TCPKeepAlive...) ничего не изменилось. Я трачу часы и дни, чтобы найти решение на форумах и блогах...

Похоже, что проблема сломанной трубы, которая запрещает подключаться к ssh/sftp, исходила из настроек разрешений на ChrootDirectory. ChrootDirectory должен принадлежать root/root с 755 разрешающими разрешениями 765/766/775... не будет работать, но разработчики (например, 700), если вам нужно предоставить разрешение на запись подключенному пользователю, вы можете дать ему в подкаталогах. если chroot принадлежит sftpUser: sftpGroup, он не будет работать ни...

chroot-> root:root 755
| 
---subdirectories-> sftpUser:sftpGroup 700 up to 770 

надеюсь, что это поможет

Ответ 8

Я использую маршрутизатор ASUS с двумя линиями интернет-ввода. Я назначаю свой IP-адрес определенной строке, и он работает.