Сегодня срочно потребовалось зайти удаленно на десктоп с убунтой 14.04. Такое бывает крайне редко, последний раз пару лет назад, но на всякий случай стандартный vnc сервер у меня всегда включен.
С первой попытки зайти не удалось, vnc-viewer жаловался на какие то проблемы с протоколом 3.3. Другим клиентом зайти тоже не удалось. Вторая Ultravnc сказала:
Error no security type suitable for rfb 3.3 supported
Решить эту фигню можно только с помощью заклинания в консоли:
gsettings set org.gnome.Vino require-encryption false
которое отключить нафиг шифрование.
P.S.
Если попытаться выполнить эту команду удаленно (например по ssh с другого хоста), то в ответ получишь:
(process:12024): dconf-WARNING **: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY
решается эта беда с помощью такого скрипта (спер отседа: http://askubuntu.com/questions/457016/how-to-change-gsettings-via-remote-shell):
#!/bin/bash
# Remember to run this script using the command «source ./filename.sh»
# Search these processes for the session variable
# (they are run as the current user and have the DBUS session variable set)
compatiblePrograms=( nautilus kdeinit kded4 pulseaudio trackerd )
# Attempt to get a program pid
for index in ${compatiblePrograms[@]}; do
PID=$(pidof -s ${index})
if [[ «${PID}» != «» ]]; then
break
fi
done
if [[ «${PID}» == «» ]]; then
echo «Could not detect active login session»
return 1
fi
QUERY_ENVIRON=»$(tr ‘\0’ ‘\n’ < /proc/${PID}/environ | grep «DBUS_SESSION_BUS_ADDRESS» | cut -d «=» -f 2-)»
if [[ «${QUERY_ENVIRON}» != «» ]]; then
export DBUS_SESSION_BUS_ADDRESS=»${QUERY_ENVIRON}»
echo «Connected to session:»
echo «DBUS_SESSION_BUS_ADDRESS=${DBUS_SESSION_BUS_ADDRESS}»
else
echo «Could not find dbus session ID in user environment.»
return 1
fi
return 0
в моем случае, я сохранил его в файл discover.sh (естесстевнно нужно ему chmod +x сделать), и запустил командой:
. ./discover.sh unity
именно точка, потом пробел, и затем путь к скрипту.
При этом на удаленном хосте должна быть запущена сессия unity, иначе фокус не получится.
В ответ он должен выплюнуть что-то вроде:
Connected to session:
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-rJBfi5qWpb
Как все это работает, читай по ссылке, в оригинале.