Категория:
Голый VNC не шифрует трафик, и оставлять его в таком виде не стоит.
Кроме того, если на Ваш IP выйдут боты из Китая и начнут стучатся по портам, даже если пароль установлен действительно качественный (учтите, что пароль на vnc сессию ограничен 8 символами) и его не взломают, попасть на сервер посредством VNC будет затруднительно, из-за постоянной ошибки на количество неверных попыток авторизации.
1. Установим ssh
# zypper in openssh
2. Настройка сервера ssh
- раскоментируем и выставим параметрыmcedit /etc/ssh/sshd_config
Port 22
Protocol 2
LoginGraceTime 2m
PermitRootLogin no
MaxAuthTries 3
MaxSessions 10
PermitEmptyPasswords no
AllowAgentForwarding yes
AllowTcpForwarding yes
X11Forwarding yes
X11UseLocalhost yes
AllowUsers lin ## добавляем пользователя lin которому буден разрешен вход по ssh
- создаем группу и пользователя которому разрешен вход по ssh# groupadd remote
# useradd -G remote lin
задаем пароль пользователю linpasswd lin
- Добавляем сервис ssh в автозагрузку# systemctl enable sshd.service
- запускаем сервис ssh# systemctl start sshd.service
проверяем запущен ли сервис ssh# systemctl status sshd.service
должно показать
sshd.service - OpenSSH Daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
Active: active (running)
- пробуем подключиться по ssh# ssh lin@localhost
password:
3. устанавливаем vnc server# zypper in tightvnc xorg-x11-Xvnc
4. Создаем группу для пользователя от которого будем запускать vnc сервер.# groupadd vnc
5. Создаем пользователя и пароль от которого будем запускать vnc сервер.# useradd -G vnc -s /sbin/false vnc
# passwd vnc
6. Переходим под пользователя vnc.# su -vnc
7. Запускаем vnc сервер.$ vncserver
Если это первый запуск vnc сервера, будет создан конфиг файл и запрошены некоторые параметры:
_$ vncserver
_You will require a password to access your desktops.
_Password:
_Verify:
_Would you like to enter a view-only password (y/n)? n
_xauth: file /home/vnc/.Xauthority does not exist
_New 'X' desktop is my.server:1
_Creating default startup script /home/vnc/.vnc/xstartup
_Starting applications specified in /home/vnc/.vnc/xstartup
_Log file is /home/vnc/.vnc/my.server:1.log
_по умолчанию порт vnc сервера будет 5901, порт каждого следующего дисплея будет увеличиваться на 1 (5902,5903,...).
8. Проверить запущен ли VNC сервер и на каком порту слушает можно следующей командой.$ netstat -nltp
_Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
_tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 1054/Xtightvnc
9.Создание скрипта автостарта vnc сервера.
Сначала убьем запущенный дисплей :1 (если он запущен).$ vncserver -kill :1
_Killing Xtightvnc process ID 3246
_:1 — какой дисплей нужно убить.
10. Для запуска KDE под vnc$ mcedit /home/vnc/.vnc/xstartup
комментируем ##twm $
добавляем startkde &
11. создаем скрипт запуска $ sudo nano /usr/local/bin/myvnc
Добавляем следующие строки в файл:
#!/bin/bash
PATH="$PATH:/usr/bin/"
DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
case "$1" in
start)
/usr/bin/vncserver ${OPTIONS}
;;
stop)
/usr/bin/vncserver -kill :${DISPLAY}
;;
restart)
$0 stop
$0 start
;;
esac
exit 0
если требуется — в скрипте можно изменить глубину цвета или разрешение экрана.
12. Делаем файл исполняемым.$ sudo chmod +x /usr/local/bin/myvnc
использование созданного нами скрипта:
$ myvnc start ###запустить vnc сервер
$ myvnc stop ###остановить vnc сервер
$ myvnc restart ###перезапустить vnc сервер
13. Теперь нужно позаботиться о том, чтобы настроенный нами vnc стартовал после загрузки сервера. (
Для этого создаем файл по следующему пути.$ sudo nano /lib/systemd/system/myvnc.service
Добавляем следующий текст в файл:[Unit]
Description=MyVnc
[Service]
Type=forking
ExecStart=/usr/local/bin/myvnc start
ExecStop=/usr/local/bin/myvnc stop
ExecReload=/usr/local/bin/myvnc restart
User=vnc
[Install]
WantedBy=multi-user.target
14. Включаем юнит в автозагрузку при старте системы.$ sudo systemctl enable myvnc.service
Created symlink from /etc/systemd/system/multi-user.target.wants/myvnc.service to /lib/systemd/system/myvnc.service.
15. Смотрим статус созданного нами юнита.$ sudo systemctl -l status myvnc.service
myvnc.service - MyVnc
Loaded: loaded (/lib/systemd/system/myvnc.service; enabled)
Active: inactive (dead)
16. Запускаем сервис myvnc$ sudo systemctl start myvnc.service
проверяем запущен ли сервис ssh$ sudo systemctl status myvnc.service
должно показать
myvnc.service - MyVnc
Loaded: loaded (/lib/systemd/system/myvnc.service; enabled)
Active: active (running)
Теперь о шифровании трафика vnc в ssh тунеле
17. Пускаем VNC поверх SSH:$ sudo nano /usr/local/bin/myvnc
Изменяем строку:
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
на
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY} -localhost"
18. Теперь для подключения к серверу сначала нужно создать тунель.
Под *nix:# ssh vnc@xxx.xxx.xxx.xxx -L 5901:localhost:5901
Теперь возможно подключение посредством vnc клиента, указав вместо IP удаленного сервера localhost и порт на котором слушает vnc-server.# vncviewer localhost:5901
19. При использовании Windows и putty агента:
После запуска putty переходим
Connection -> SSH -> Tunnels.
В поле Source Port вбиваем порт на котором слушает VNC сервер — 5901, в поле Destination вписываем — localhost:5901 и жмем кнопку Add.
Перходим Connection -> SSH -> X11 Ставим галку Enable X11 Forwarding
Теперь возвращаемся на вкладку Session вписываем IP сервера и порт 22 (тут же можно и сохранить конфигурацию подключения), жмем Open
отключаем вход пользователя vnc в систему yast- управление пользователями и группами - пользователь vnc (редкатировать) - подробности -оболочка входа- /bin/false - группа vnc
источник
https://sohabr.net/habr/post/273201/