Я нахожусь на машине с 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 и экземпляра консоли, что позволяет легко перемещаться, если вы не можете вспомнить свои номера портов.
Надеюсь это поможет.