Клиент Mosh не может связаться с сервером Mosh на гостевой виртуальной машине
У меня возникли проблемы с попыткой подключиться к mosh-серверу, установленному на гостевой виртуальной машине Arch Linux (настроенной с помощью стека: KVM, libvirt и QEMU).
У меня настроена переадресация портов:virsh qemu-monitor-command --hmp arch_test 'hostfwd_add ::2222-:22'
, поэтому я могу связаться сssh -p 2222 arch@localhost
, без проблем.
Выдача команды:mosh --server="LANG=de_DE.UTF-8 mosh-server" --ssh="ssh -p 2222" -p 60001:60001 arch@localhost
на клиенте (хосте) открывается соединение, но у меня остается сообщение следующего содержания:
mosh: Ничего не получено от сервера через UDP-порт 60001. [Для выхода: Ctrl-^ .]
Естественно, я зашел в FAQ , чтобы попытаться разобраться в проблеме:
Вопрос: Что означает сообщение «От сервера по UDP-порту 60003 ничего не получено»?
Это означает, что mosh смог успешно запустить mosh-сервер на удаленном компьютере, но клиент не может связаться с сервером. Обычно это означает, что какой-то тип брандмауэра блокирует UDP-пакеты между клиентом и сервером. Если вам нужно было перенаправить TCP-порт 22 на NAT для SSH, вам также придется перенаправить порты UDP. Mosh будет использовать первый доступный порт UDP, начиная с 60001 и заканчивая 60999. Если вы собираетесь иметь лишь небольшое количество одновременных сеансов на сервере, вы можете перенаправить меньший диапазон портов (например, от 60000 до 60010). .
Такие инструменты, как netstat, netcat, socat и tcpdump, могут быть полезны для устранения проблем с сетью и брандмауэром.
Эта проблема также может быть результатом ошибки в glibc 2.22, которая затрагивает программы, которые связываются с protobuf и utempter и используют агрессивные флаги усиления компилятора. (запись в трекере ошибок glibc, а также запись в трекере ошибок Mosh.) Проблема приводит к тому, что mosh-сервер немедленно завершает работу при запуске. Мы считаем, что решили эту проблему в Mosh 1.2.6, но, если вы обнаружите обратное, сообщите об ошибке.
После этого я попробовал следующее:
- убедитесь, что у меня есть переадресация порта UDP, например:
virsh qemu-monitor-command --hmp arch_test 'hostfwd_add udp::60001-:60001'
; - убедитесь, что в брандмауэре (если есть) открыт этот порт:
firewall-cmd --zone=public --add-port=60000-60010/udp
(после проверки какая зона активна); - попробуй послушать с
nc
на сервере (гостевом) сnc -l -u 60001
а затем попробуйте подключиться к нему на клиенте (хосте) с помощьюnc -u localhost 60001
и введите что-нибудь, ожидающее «эхо» на сервере, чего не произошло, но соединение не было разорвано после нажатия Enter для отправки; - попробуйте просканировать открытые порты UDP с помощью
nc -v -z -u -w 5 localhost 60000-60010
, который ничего не дал, только для TCP для порта 2222;
Я не уверен, что еще попробовать. Возможно, мне не хватает какой-то конфигурации или команды, буду признателен за любые рекомендации.