У меня есть хост Windows 8.1, на котором я установил сервер Ubuntu 15.05 в виртуальной машине. Я установил сервер SSH в гостевой системе (Ubuntu), а затем создал правило переадресации с порта хоста 2222 на порт гостя 22.
Если я попробую подключиться по ssh с хоста, ssh -p 2222 username@localhost
то смогу без проблем подключиться к виртуальной машине.
Если я пытаюсь подключиться с удаленной машины (с OS X) в той же локальной сети, то в большинстве случаев я получаю ошибку Timeout. Когда мне действительно удается установить соединение, через некоторое время оно зависает, пока я не получаю ошибкуssh -p 2222 [email protected]
Ошибка записи: сломанная труба.
Я отключил брандмауэр моего антивируса (Bitdefender) и создал правила в брандмауэре Windows, разрешающие трафик с портов 22 и 2222. Проблема сохраняется даже после отключения обоих брандмауэров (на самом деле, брандмауэр Bitdefender всегда деактивирован).
Я также установил UseDNS no
в файле гостя sshd_config
. В Госте (Ubuntu) не установлен брандмауэр.
Я вижу, что проблема возникает как с VMware Workstation 11, так и с VirtuaBox.
решение1
Проблема, похоже, в том, что сеть VM недоступна извне машины Windows 8.1. Вы можете видеть, что она работает, когда вы подключаетесь по ssh к localhost:2222, и это может быть вызвано конфигурацией сети (вероятно, настроена как NAT, по умолчанию)
При использовании VirtualBox вам следует настроить сеть виртуальной машины на мост, и это должно сработать. Вы можете получить больше информации изhttps://superuser.com/questions/810097/vmware-player-bridged-networking-no-longer-works-host-win8-1-guest-mint-17-l
решение2
У меня была похожая проблема на хосте Windows 7 с WMware Workstation 12.5.9. Единственное решение, которое мне действительно помогло: https://communities.vmware.com/thread/590825
Установка альтернативных флагов QoS, похоже, помогает обойти эту проблему, например:ssh -o IPQoS=throughput ...