пятница, 14 мая 2010 г.

Удалённый шелл в пять минут.

Дано некоторое количество машин с установленной Ubuntu Linux 10.04.
Надо настроить удалённое управлнеие "каждой с каждой".

Наш выбор - ssh (Secure SHell) (я не буду рассказывать историю и принципы его работы - для этого есть пруфлинк).
Введём минимальные понятия:
Клиент - хост, с которого подключаемся (физическая клавиатура и монитор перед нами).
Сервер - хост, к которому подключаемся (компьютер на соседнем столе либо на соседнем континенте).
Готовим сервер:
Устанавливаем openssh-server
Настраиваем sshd
В /etc/ssh/sshd_config раскоментируем строки
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys

Создаём пользователя, от имени которого будем грешить:
$ adduser
и добавляем его в /etc/sudoers
Настраиваем клиент:
Генерируем ключ:
$  ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/fenrir/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/fenrir/.ssh/id_rsa.
Your public key has been saved in /home/fenrir/.ssh/id_rsa.pub.
The key fingerprint is:
e9:6e:f3:a5:d9:87:45:c7:d0:c4:3d:1e:38:db:4c:9a fenrir@ibem

По умолчанию идёт генерация rsa-ключа. Я предпочитаю не задавать пароль для закрытых ключей, но параноики могут поступить иначе.
Обратите внимание: удалённое подключение сможет осуществить тот, пользователь, который генерировал ключи.
Настраиваем файл подключений.
$ cat >> ~/.ssh/config

cat ~/.ssh/id_rsa.pub | ssh ussh@192.168.1.104 'umask 0022 && mkdir -p ~/.ssh && cat - >> ~/.ssh/authorized_keys'


> Есть машина с запущенным X-сервером и сессия пользователя там. Хочется запустить по ssh (от имени этого пользователя) приложение так, чтобы его окно появилось в этой сессии. 

В случае с ssh достаточно указать ключ -X (и разрешить X11Forwarding в
конфиге sshd, если он запрещен). С технической точки зрения, эта
опция просто создает туннель и устанавливает переменную DISPLAY.

> Наверное, правильно будет спрашивать даже не так. Как приложение узнаёт, что оно может рисовать окно и взаимодействовать с X-сервером (и как она определяет, какой из x-серверов активен?) 

$DISPLAY

Комментариев нет:

Отправить комментарий