Назад | Перейти на главную страницу

VNC для нескольких пользователей на одной машине

Я нахожусь на машине с OS X 10.5 и несколькими учетными записями пользователей. Есть ли способ для одного из этих пользователей подключиться к машине по ssh, запустить vnc-сервер и затем подключиться к нему? Я пробовал Vine Server, который должен иметь аналогичные возможности, но похоже, что он либо использует ssh для запуска сервера, либо сервер уже запущен в каждой учетной записи, но не в обоих одновременно.

Спасибо

Некоторое время назад я занимался этим (на Tiger?), Но так и не нашел хорошего решения. Я обнаружил, что вам нужно зарегистрировать пользователя графически, затем запустить сервер VNC, а затем вы можете использовать быстрое переключение пользователей, чтобы переключиться на другого пользователя и войти в систему. Таким образом, это действительно означало, что никто не мог использовать Mac сам [редактировать: когда появится диалоговое окно быстрого переключения пользователей] - все они должны быть подключены через VNC, но было приятно видеть, что Mac с радостью запускает несколько сеансов. [редактировать: Кроме того, хотя несколько человек могут использовать компьютер одновременно, только один может быть в процессе входа в систему за раз, что занимает от 30 секунд до минуты.]

Одно замечание: в руководстве по сетевой загрузке, я полагаю, говорится, что вам нужна лицензия на ОС для каждой машины, которая будет загружаться по сети; Я предполагаю, что то же самое относится и к такой настройке VNC.

Я этого не помню, но вот несколько примечаний и код, с которым вы можете поиграть (на свой страх и риск).

Mac Thin-Client Plan
---------
Client:
Uses paramiko script.  User is asked for name and password.  Tries to connect.  Alerts user on failure.
If it connects, it CDs to a certain directory on the server, and calls a function, using the name and password.

Server:
Script is run.  Server checks if it is able to log the user in at that moment.
When permitted, the console comes up, and then a VNC server is started.
Server tells client which port VNC server is started on.

Client then exits paramiko application, and launches a VNC application.
When VNC application is exited, client goes back to the log-on screen.

StartVNCLogin.sh (для запуска на Mac, выступающем в качестве сервера):

#!/bin/bash

# This script should be runnable by any user.  It takes two parameters -- the user's name and password.
# This script should be owned by root, and should let the owner read/write/execute, but no other user.
#   sudo chmod 700 /sbin/StartVNCLogin.sh
# In /etc/sudoers, the script needs to be set up so all users can run it.
# See http://mandrivausers.org/lofiversion/index.php/t33702.html.
#   use visudo to add "ALL ALL=NOPASSWD: /sbin/StartVNCLogin.sh" to the end of the file

# With the parameters -- the user name and password -- the script will switch to the login screen,
# and will then use applescript to log the user in
# Afterwards, it will start a VNC session for that user, and return the port number.
# At this point, the client can connect via VNC.

say "Log on called"

# Do we have root access?
if [ ! $( id -u ) -eq 0 ]; then
    echo "Error: Script must be run with administrator priviledges"
    exit -1
fi


# Get the user name and password
if [ "$#" = "2" ]; then
    export USERNAME="$1"
    export PASSWORD="$2"
else
    echo "Error: Please supply a username and password."
    exit -2
fi

# This step should not be necessary, as the user had to use ssh to run this script
# Verify that the user exists on the system
USERID=`id -u $USERNAME`;
if [[ -z $USERID ]]; then
    echo "Error: The user $USERNAME does not exist on this machine"
    exit -3;
fi;


# Now, switch to the login screen
echo "Info: bringing up login screen" 
# Ask the logon screen to come up and allow us to log-in as the desired user
#/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -switchToUserID $USERID &
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend

sleep 15

# Then, use applescript to enter the user's password
echo "Info: logging user in"

# And enter in the password
osascript <<END
set pword to system attribute "PASSWORD"
set username to system attribute "USERNAME"
tell application "System Events" 
    keystroke username
    keystroke return
    delay 1
    keystroke pword
    delay 1
    keystroke return
    keystroke return
end tell
END

echo "Info: Waiting for user to be logged in"


echo "Info: Starting VNC server."

# Now, we start the VNC server
if [ -x /Applications/Vine\ Server.app/Contents/Resources/OSXvnc-server ]; then
    /Applications/Vine\ Server.app/Contents/Resources/OSXvnc-server -rfbport 0 -desktop "New Desktop" -rfbnoauth -restartonuserswitch N -unicodekeyboard 0 -keyboardloading n -pressmodsforkeys n -eventtap 3 -swapbuttons -rendezvous y &
else
    "Error: Can not find the VNC server application!  The server is not properly configured for VNC login."
    exit -4;
fi;

Важные части клиентского скрипта (для запуска в linux):

# note that I am redirecting stderr to stdout for simplicity
chan.exec_command("sudo /sbin/StartVNCLogin.sh " + username + " " + pw + " 2>&1")
stdout = chan.makefile('rb') 

vnc_port = -1

for line in stdout:
    print '... ' + line.strip('\n')
    # look for a line where a port is stated
    if line.find("Started Listener Thread on port") > -1:
        vnc_port = int(line.rsplit(' ', 1)[1])
        print "--- The VNC Port is %d" % vnc_port
        chan.close()    # sever the connection; we know what we need to know

print "Done"

#chan.close()
t.close()

os.system("vncviewer %s:%d -Shared -Fullscreen" % (hostname, vnc_port))

Встроенный в операционную систему - нет.

Ты захочешь посмотреть на Терминальный сервер Aqua Connect и вопрос 8966 здесь, о сбое сервера.

Настройте Xvnc с XDMCP, а затем они смогут vnc и войти на сервер. В Интернете есть много руководств по настройке, вот один.

OS X 10.5 уже содержит сервер VNC, который можно настроить для каждой учетной записи.

Я думаю (нет передо мной Mac), что вы можете найти настройки в System Preferences->Sharing. Что-то такое.

Мы с радостью используем комбинацию Vine Server для OSX и JollyFastVNC для клиентов.

Vine Server предоставляет «личный» экземпляр VNC-сервера на уникальном номере порта для каждого вошедшего в систему пользователя. Единственная уловка заключается в том, что пользователь должен быть уже зарегистрирован на Mac с VineServer, работающим под его учетной записью, чтобы иметь возможность использовать VNC. Решением проблемы начальной загрузки является "Системный сервер" Vine Server, который обеспечивает сеанс VNC для консоль Mac - и, таким образом, позвольте любому пользователю, имеющему доступ к сеансу консоли, войти в Mac (и, таким образом, запустить свой собственный частный экземпляр Vine Server)

Настройка относительно проста:

1 / Включите быстрое переключение пользователей, чтобы несколько пользователей могли использовать Mac.

2 / Войдите на консоль Mac как администратор, которому вы также хотите предоставить удаленный доступ. Запустите Vine Server от имени этого пользователя и установите флажок «Открыть при входе в систему».

3 / Откройте настройки сервера Vine и обратите внимание на номер порта, назначенный этому экземпляру сервера VNC. Вручную повторно введите это число, чтобы «прикрепить» этот экземпляр к этому порту для последующих запусков. Также рекомендуется установить здесь пароль для этого уникального сеанса пользователя.

4 / Перейдите на вкладку «Совместное использование» и убедитесь, что установлен флажок «Разрешить несколько пользовательских сеансов».

5 / Перейдите на вкладку «Автозагрузка» и установите флажок «Системный сервер ...». Запустите экземпляр системного сервера на порту по умолчанию (5900). Это будет ваш приставка VNC-сервер для использования. (Я рекомендую вам установить на это пароль)

6 / Закройте окно настроек и нажмите кнопку «Перезагрузить сервер».

Теперь вы можете войти в два Пользовательские сеансы VNC: один в качестве консоли на порту 5900, а второй в качестве пользователя-администратора, под которым вы только что вошли в систему.

Теперь попросите каждого пользователя войти в систему, добавить Vine Server в свою док-станцию ​​и повторить шаги 2, 3 и 4 выше.

Мы отметили только две проблемы: если Mac выключен и снова выключен, системный сервер не запустится автоматически. Первоначальный пользователь должен войти в систему и запустить его через пользовательский интерфейс.

Вторая проблема заключается в том, что если пользователь входит в систему через удаленный сеанс консоли VNC, его последующее использование Mac будет видно как в сеансе консоли, так и в его «личном» сеансе VNC. то есть сеанс консоли остается привязанным к последнему зарегистрированному пользователю, пока кто-то другой не войдет в систему удаленно или локально. Мы работаем над этим, снова открывая сеанс удаленной консоли после входа в систему и используя быстрое переключение пользователя на «показывать окно входа», что, кажется, заставляет сеанс консоли снова разъединяться.

JollyFastVNC войдет в картину как клиент VNC с поддержкой Bonjour с красивым браузером "доступных серверов". Это предлагает удаленный Mac "hostname: port" для каждого запущенного экземпляра Vine Server и экземпляра консоли, что позволяет легко перемещаться, если вы не можете вспомнить свои номера портов.

Надеюсь это поможет.