В этой статье мы настроим удалённый доступ к комьютеру под управлением Elementary OS. В качестве пациента выступает Elementary OS 0.3.2 Freya, но в принципе статья подойдёт для любой версии этой операционной системы, более того эта статья может помочь вам настрить VNC не только для Elementary OS, но и для других дистрибутивов Linux на основе Debian или Ubuntu.
Шаг 1. Нужен IP, по которому мы будем обращаться к комьютеру, к которому мы собираемся подключиться удалённо
Если ваши компьютеры находятся в одной локальной сети, то проблем возникнуть не должно. Если же оба комьютера достаточно сильно географически удалены, оба с серым IP и оба находятся за NAT, то нам придётся либо получить белый IP для одного из них и настроить проброс портов, либо объединить их в виртуальную локальную сеть. Для объединения в виртуальную локальную сеть можно использовать LogMeIn Hamachi, она бесплатна и у неё есть клиент для Linux.
Шаг 2. Настройка сервера VNC
На компьютере, к которому нам нужно получить удалённый доступ устанавливаем сервер VNC:
1 |
sudo apt-get install x11vnc |
Затем задаём пароль для доступа к компьютеру:
1 |
sudo x11vnc -storepasswd /etc/x11vnc.pass |
Теперь мы можем запустить сервер x11vnc командой:
1 |
/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared |
Но в идеале нужно настроить так, чтобы сервер x11vnc запускался вместе с запуском компьютера, для этого нам нужно определить, использует ли наш дистрибутив systemd. Зачастую это не так просто, поэтому я для начала попытался настроить запуск демона x11vnc через systemd.
Для этого я создал файл конфигураци:
1 |
sudo nano /lib/systemd/system/x11vnc.service |
Со следующим содержимым:
1 2 3 4 5 6 7 8 |
[Unit] Description=Start x11vnc at startup. After=multi-user.target [Service] Type=simple ExecStart=/usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared [Install] WantedBy=multi-user.target |
Запускаем службу:
1 2 3 |
sudo systemctl enable x11vnc.service sudo systemctl daemon-reload sudo systemctl start x11vnc.service |
Теперь перезагрузите компьютер.
1 |
sudo shutdown -r now |
Проверьте, запустилась ли служба, для чего попробуйте её остановить, а затем снова запустить:
1 2 3 |
$ sudo service x11vnc stop [sudo] password for fedor: x11vnc: unrecognized service |
Как видите, ничего не получилось. Причина, скорее всего, в том, что наш дистрибутив не использует systemd (причём сам systemd вполне может быть установлен — это ничего не значит).
Так как с systemd у нас ничего не вышло (у вас вполне может получиться, проверьте), то мы пойдёт другим путём, а конкретно будем использовать upstart:
1 2 |
$ sudo touch /etc/init/x11vnc.conf $ sudo scratch-text-editor /etc/init/x11vnc.conf |
Сохраните в файл следующее содержимое:
1 2 3 4 |
start on login-session-start script /usr/bin/x11vnc -xkb -auth /var/run/lightdm/root/:0 -noxrecord -noxfixes -noxdamage -rfbauth /etc/x11vnc.pass -forever -bg -rfbport 5900 -o /var/log/x11vnc.log end script |
Настройка завершена. Теперь мы можем перезагрузить компьютер, и x11vnc сервер будет автоматически запущен на порту 5900.
Для удалённого подключения к нашему компьютеру нам нужно на компьютере, с которого мы собираемся осуществлять удалённое подключение установить один из VNC viewer-ов: TightVNC или RealVNC.
Имейте в виде, что протокол VNC подразумевает, что на экране компьютера, которым вы управляете удалённо будут отображаться все ваши действия, так как вы подключаетесь именно к запущенной графической среде. Если вам необходимо, чтобы ваши действия не были видны, то оставляйте монитор отключённым, или используйте RDP вместо VNC, но это уже тема для отдельной статьи.
Также при подключении через VNC может возникнуть проблема с русскими буквами.