Вопрос или проблема
Я пытаюсь установить безопасное соединение для доступа к экрану с моего Mac на машину с Windows 10 за пределами моей локальной сети. Я уже установил VNC сервер на Windows машине, и подключение работает идеально, используя только пароль.
Тем не менее, я хочу сделать это соединение более безопасным, используя SSH тоннель. Ниже я поделюсь шагами, которые я предпринял, и сообщением об ошибке, с которой я столкнулся.
Мой вопрос: когда я создал тоннель, я использовал конкретного пользователя на своей машине. Однако, когда я осуществляю доступ через VNC без тоннеля и только с паролем, я могу напрямую видеть экран моего рабочего стола без какой-либо аутентификации для пользователя Windows, в отличие от процесса с тоннелем.
Второй момент касается метода шифрования. Я прочитал в некоторых интернет-статьях, что VNC использует определенный метод шифрования, например, RSA-1 или что-то подобное, но я не уверен, как проверить его правильность или определить, подходит ли он для VNC.
Управление SSH соединением на Mac
1. Генерация вашего SSH ключа (если это еще не сделано):
Сначала я создаю ssh ключ для подключения с моего Mac, эти команды выполняются на стороне Mac OS:
ssh-keygen -t rsa
Это создаст два файла:
~/.ssh/connect_from_mac_to_windows10_rsa
(приватный ключ)~/.ssh/connect_from_mac_to_windows10_rsa.pub
(публичный ключ)
После этого я скопировал публичный ключ в authorized keys на моей Windows машине.
2. Настройка VNC соединения с SSH тоннелем:
Я создал SSH тоннель, используя приватный ключ, и соединение было успешно установлено:
ssh -i ~/.ssh/connect_from_mac_to_windows10_rsa -L 5901:localhost:5900 [email protected]
1. Порты
Я открыл необходимые порты на моей Windows 10 и маршрутизаторе
порт 22
порт 5900
Управление SSH соединением на Mac
Я создаю SSH тоннель, используя приватный ключ:
ssh -i ~/.ssh/connect_from_mac_to_windows10_rsa -L 5901:localhost:5900 [email protected]
Соединение было успешно установлено, что позволяет мне управлять моей Windows машиной. Затем подключитесь через VNC:
- Откройте Finder и нажмите Cmd + K (или выберите “Переход > Подключиться к серверу”).
- Введите следующий адрес:
vnc://localhost:5901
У меня возникла следующая ошибка:
Невозможно установить связь с "localhost". Убедитесь, что удаленный компьютер доступен и что брандмауэр не блокирует доступ к экрану.
Что я не понимаю, если проблема связана с доступом к порту, удаленное соединение через VNC с только с паролем VNC не должно работать. Я проверил брандмауэр на своей Windows машине, и Tight VNC имеет необходимые разрешения на доступ.
Я пробовал использовать другие вьюеры, такие как Tight VNC и Real VNC, и результат был тот же: с публичным IP адресом и паролем VNC я мог делиться и видеть экран Windows с моего Mac. Однако, я никогда не смог достичь этого, используя SSH тоннель.
Я поделился здесь фотографиями, если вам нужно их увидеть:
введите описание ссылки здесь
Ответ или решение
Для обеспечения безопасного подключения VNC посредством SSH-туннеля с Mac (клиент) на Windows 10 (сервер) необходимо учесть несколько технических нюансов. Давайте разберем процесс, выявим возможные проблемы и предложим варианты решения.
Теория
Подключение через VNC напрямую с использованием пароля может быть уязвимым, так как передача данных идет без шифрования. SSH-туннель позволяет зашифровать весь трафик, что делает соединение безопасным. При этом туннелирование требует правильной настройки SSH-конфигурации и корректного открытия необходимых портов на уровне сети и фаервола.
Пример
Ваша конфигурация SSH-туннеля предполагает использование команды:
ssh -i ~/.ssh/connect_from_mac_to_windows10_rsa -L 5901:localhost:5900 [email protected]
То есть, вы создаете локальный туннель, который перенаправляет запросы на порт 5901 на вашем Mac на порт 5900 на удаленной Windows машине через localhost. Однако вы сталкиваетесь с проблемой неудачной коммуникации при использовании адреса vnc://localhost:5901
.
Применение
-
Проверка SSH ключей: Удостоверьтесь, что ваш ключ правильно оформлен и находится в authorized_keys на сервере Windows. Перепроверьте права доступа к ключам; они должны быть защищены (например, 600 для приватного ключа).
-
Настройка VNC-сервера на Windows: Проверьте настройки VNC-сервера. Убедитесь, что он обслуживает подключения на порту 5900 и может принимать локальные подключения через localhost.
-
Фаервол и маршрутизация: Поскольку соединение через SSH успешно устанавливается, проблема может быть связана с маршрутизацией VNC через туннель:
- Убедитесь, что локальный порт 5901 на Mac открыт и прослушивается.
- Проверьте настройки фаервола на Windows и маршрутизатора. Возможно, необходимо временно отключить фаервол, чтобы исключить его как источник проблемы.
-
Диагностика среды SSH: Проверка успешности туннелирования может быть произведена с помощью проверки доступности конечного соединения через команду telnet:
telnet localhost 5901
. -
Использование разных VNC-клиентов: Если ошибка продолжается, попробуйте различные клиенты (например, RealVNC, TightVNC) для устранения проблем совместимости.
-
Диагностика логов: Посмотрите SSH, VNC-сервер и системные логи на наличие любых ошибок или предупреждений, которые могут указывать на причину сбоя соединения.
Заключение
С учетом ошибок и деталей описанных выше, критично проверить каждую составляющую процесса подключения. Ваша основная задача — обеспечить корректность маршрутизации и согласованность настроек на всех уровнях сети и приложений. Если данные шаги не решат проблему, рекомендуется обратиться к документации VNC и SSH или рассмотреть использование дополнительных инструментов для мониторинга сетевых соединений для более глубокого анализа проблемы.