Содержание

Ключевые слова: Х-терминал, linux, LTSP, Linux Terminal Server Project, терминальный linux-сервер, бездисковая станция, ПК без жесткого диска, использование старых компьютеров, diskless workstation, thin client, asplinux, использование Linux в офисе, X-terminal

Удаленный запуск консольных программ

Если у вас возникли вопросы касательно надежности и эффективности удаленного запуска приложений, сейчас самое время проверить их в действии. В принципе, проверить удаленный запуск можно и на одном компьютере через сетевой интерфейс обратной петли (lo), но лучше все же задействовать локальную сеть, а следовательно для проверки нам понадобятся два компьютера.

Самая на мой взгляд незаслуженно распространенная программа удаленного доступа – это telnet. Именно незаслуженно, потому что она передает по сети данные (в частности имя пользователя и пароль) в не зашифрованном виде. Имея такую огромную дыру в безопасности она быстро нашла своего безопасного приемника SSH (Secure SHell – защищенная оболочка). На самом деле ssh скорее замена для rlogin и rsh, но не будем придираться к словам, а перейдем к практике. Именно на примере ssh и рассмотрим пример запуска удаленных приложений.

Один из компьютеров будет сервером, а другой клиентом. На сервере необходимо проверить установку серверных пакетов свободной реализации SSH – OpenSSH. Делаем это командой (примеры данной главы ориентированы на дистрибутивы операционной системы Linux, которые используют менеджер пакетов RPM, в частности ASPLinux 9.0):

$ rpm -qa | grep ssh
openssh-clients-3.6.1p1-1.1asp
openssh-3.6.1p1-1.1asp
openssh-askpass-gnome-3.6.1p1-1.1asp
openssh-server-3.6.1p1-1.1asp
openssh-askpass-3.6.1p1-1.1asp

Если вы увидели что-то подобное у себя на экране значит пакет ssh-server у вас установлен и достаточно лишь проверить его конфигурацию. Если пакеты OpenSSH на вашем компьютере отсутствуют, то самое время их установить на сервер:

# rpm -ihv openssh-3.6.1p1-1.1asp
# rpm -ihv openssh-server-3.6.1p1-1.1asp

Сервер-демон sshd настраивается достаточно просто: редактированием файла /etc/ssh/sshd_config. Ниже приводится пример содержимого файла /etc/ssh/sshd_config:

#       $OpenBSD: sshd_config,v 1.59 2002/09/25 11:17:16 markus Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options change a
# default value.

#Port 22
#Protocol 2,1
#ListenAddress 0.0.0.0
#ListenAddress ::

# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key

# Lifetime and size of ephemeral version 1 server key
#KeyRegenerationInterval 3600
#ServerKeyBits 768

# Logging
#obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO

# Authentication:

#LoginGraceTime 120
#PermitRootLogin yes
#StrictModes yes

#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile     .ssh/authorized_keys

# rhosts authentication should not be used
#RhostsAuthentication no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

#AFSTokenPassing no

# Kerberos TGT Passing only works with the AFS kaserver
#KerberosTgtPassing no

# Set this to 'yes' to enable PAM keyboard-interactive authentication
# Warning: enabling this may bypass the setting of 'PasswordAuthentication'
#PAMAuthenticationViaKbdInt no

#X11Forwarding no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PrintMotd yes
#PrintLastLog yes
#KeepAlive yes
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression yes

#MaxStartups 10
# no default banner path
#Banner /some/path
#VerifyReverseMapping no

# override default of no subsystems
Subsystem       sftp    /usr/libexec/openssh/sftp-server

В этом файле используются практически все значения по умолчанию, за исключением “X11Forwarding yes”, но это для запуска Х-приложений. Как видите настраивать практически ничего не пришлось. Теперь проверяем работает ли демон sshd:

$ ps aux | grep sshd
root       712  0.0  0.0  3572   60 ?        S    Sep24   0:01 /usr/sbin/sshd
mikola   10794  0.0  0.0  3764  596 pts/1    S    09:30   0:00 grep sshd

Если работает, то все нормально. Если нет, запускаем его:

# /sbin/service sshd start

Настройка сервера закончена. Теперь переходим к настройке клиента. Для начала проверяем установлена ли клиентская часть пакета OpenSSH: нас в частности интересуют пакеты openssh-clients и openssh. Если таких пакетов на импровизированном клиентском компьютере нет, самое время их установить:

# rpm -ihv openssh-3.6.1p1-1.1asp
# rpm -ihv openssh-clients-3.6.1p1-1.1asp

Надеюсь понятно, что в вашем любимом дистрибутиве операционной системы Linux расположение и версии этих пакетов могут значительно отличатся, но суть необходимости их установки от этого не измениться. Теперь вам доступна консольная команду удаленного подключения к серверу – ssh.

Синтаксис использования ssh очень простой, достаточно лишь знать доменное имя или IP-адрес сервера. Например, сервер к которому подключаюсь я имеет IP-адрес 192.168.0.20, поэтому я использую такую простую команду:

$ ssh 192.168.0.20

При первом подключении к серверу вам потребуется создать пару ключей и на экране вы увидите нечто подобное:

The authenticity of host '192.168.0.20 (192.168.0.20)' can't be established.
RSA key fingerprint is 92:00:65:d2:53:90:ec:42:69:0b:d0:97:51:24:5f:ed.
Are you sure you want to continue connecting (yes/no)?

Следует согласиться с предложением программы и набрать “yes”. После секундной паузы вы увидите на экране приглашение для ввода пароля пользователя удаленного сервера:

Warning: Permanently added '192.168.0.20' (RSA) to the list of known hosts.
pasha@192.168.0.20's password:

В данном случае необходимо ввести пароль пользователя pasha на сервере 192.168.0.20. Если вы все сделали правильно, то в терминале увидите приглашение оболочки удаленного сервера. Если и это вас не очень убедило (наверное я имею дело с настоящим скептиком), выполните команду проверки сетевых интерфейсов:

$ /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr 00:00:21:26:18:3B  
          inet addr:192.168.0.20  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9052 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8408 errors:0 dropped:0 overruns:0 carrier:0
          collisions:738 txqueuelen:100 
          RX bytes:6448118 (6.1 Mb)  TX bytes:1242932 (1.1 Mb)
          Interrupt:9 Base address:0xe400 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:251 errors:0 dropped:0 overruns:0 frame:0
          TX packets:251 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:381023 (372.0 Kb)  TX bytes:381023 (372.0 Kb)

Как видите, IP-адрес сетевой карты (192.168.0.20) указывает на то, что вы действительно работаете на удаленном компьютере. Теперь вы можете запускать практически любое консольное приложение удаленного сервера, например мой любимый файловый менеджер Midnight Commander (см. рис. 2.1).

Рис. 2.1. Пример запуска Midnight Commander на удаленном компьютере

Возможности применения удаленного доступа довольно обширны. Так им постоянно пользуются системные администраторы для изменения параметров компьютеров пользователей. Не секрет, что сисадмины по своей природе народ ленивый и им совсем не хочется делать лишние телодвижения, поэтому им очень нравятся утилиты на подобие ssh. Также через ssh удобно администрировать удаленные серверы через Интернет. Иными словами удаленный доступ штука хорошая и нет никакой необходимости ограничивать его возможностями консольных приложений. Далее из этой книги вы узнаете как запускать на удаленном компьютере приложения с графическим интерфейсом системы X-Windows.

Следует помнить, что для ограничение доступа через протокол SSH в файле /etc/ssh/sshd_config могут использоваться параметры AllowGroups и AllowUsers, а также DenyGroups и DenyUsers. Из соображений системной безопасности целесообразно предоставлять доступ по SSH только тем пользователям, которым он действительно нужен, а не оставлять право удаленного входа для всех пользователей, как это сделано по умолчанию. Если при использовании команды ssh вы столкнулись с проблемами доступа по сети к удаленному серверу, то в первую очередь следует проверить наличие параметров ограничивающих доступ в файле /etc/ssh/sshd_config. Если это не помогло, то нужно обратить внимание на правильность ввода пароля пользователя, а также посмотреть настройки межсетевого экрана (firewall), на предмет блокирования портов с номерами 22, 513-1023.

Пока интересно, читаем дальше!

Авторское право © Сеник Николай, 2004-2006