<< Предыдущий раздел | /\ Содержание | >> Следующий раздел
Telnet предназначен для входа в другой компьютер через сеть и интерактивной работы на нем ("так же, как на своем").
У telnet есть два режима работы: командный и "режим сессии". Обычно telnet запускают с указанием компьютера, к которому подключиться:
bobby:~% telnet class Trying 193.124.166.227... Connected to class.inp.nsk.su. Escape character is '^]'. Welcome to UNIX login: _ |
После запуска на экране появляется обычное приглашение для входа в систему, и далее все выглядит точно так же, как на терминале, подключенном к тому компьютеру.
Для завершения telnet-сессии достаточно просто выйти из системы на удаленном компьютере (обычно для этого служит команда "logout").
Если запустить telnet без указания компьютера, то он переходит в командный режим, выдавая приглашение "telnet>". Обычно достаточно знать две команды: открыть соединение (open, или просто o) и выход (quit, q).
Команда open работает точно так же, как если указать telnet при запуске, к какому компьютеру подключиться (сравните с предыдущим примером):
bobby:~% telnet telnet> o class Trying 193.124.166.227... Connected to class.inp.nsk.su. Escape character is '^]'. Welcome to UNIX login: _ |
Она используется, например, когда не хочется, чтобы по команде ps другие пользователи могли узнать, куда сделан telnet.
Во время работы можно в любой момент перейти в командный режим, нажав Ctrl+] (закрывающая квадратная скобка) (при соединении telnet говорит об этом -- "Escape character is '^]'"). Вернуться обратно можно, просто нажав Enter.
Переходить в командный режим обычно требуется в двух случаях.
|
В отличие от программ telnet под другими ОС (Dos, Windows...) telnet в Unix выполняет чисто связные функции. Непосредственно же выводом на экран он не занимается -- за это отвечает или сам Unix (на консоли) или xterm. Так что если что-то отображается неправильно (например, шрифты), то это проблема не telnet, а терминала. |
Вместо telnet для входа в другой компьютер можно пользоваться программой rlogin (remote login). У нее нет командного режима и при запуске надо просто указывать компьютер. Rlogin работает по другому протоколу и автоматически передает имя пользователя, так что вводить надо лишь пароль:
bobby:~% rlogin class Password: Last login: Sat Mar 13 03:04:52 from Sky You have mail. [bolkhov@Class bolkhov]$ _ |
Чтобы "заморозить" rlogin, надо нажать символ тильды "~" и затем Ctrl+Z. Для "экстренного" завершения сессии надо нажать последовательно тильду и точку -- "~.". Обе комбинации воспринимаются только сразу после клавиши Enter.
Если требуется зайти на удаленный компьютере под другим именем (а оно ведь в отличие от telnet не спрашивается), то надо указать его в ключе "-l".
bobby:~% rlogin -l mickey class Password: |
У rlogin есть еще одно достоинство: можно сделать так, что при входе пароль не будет спрашиваться!
Для этого надо, чтобы в home-директории на удаленном компьютере был файл с именем ".rhosts", в котором должны быть перечислены компьютеры, с которых разрешен вход без пароля -- по одному имени компьютера в каждой строке. Если надо разрешить вход пользователю с другим именем, то надо указать это имя через пробел после имени компьютера. Пример:
Sky.inp.nsk.su Class.inp.nsk.su Class.inp.nsk.su bagira |
В этом примере разрешается беспарольный вход самому пользователю с компьютеров Sky и Class, и пользователю bagira с компьютера Class.
Поскольку файл .rhosts надо сначала создать, то по крайней мере первый раз придется все же зайти, введя пароль.
.rhosts -- это как бы "список гостей, которым разрешен вход".
Права на запись в .rhosts должен иметь только сам пользователь -- иначе .rhosts просто не используется. Очень рекомендуется также убрать права на его чтение всем, кроме владельца (chmod 600 .rhosts).
При указании имен компьютеров надо помнить одну тонкость: это должно быть так называемое каноническое имя, т.е. то, которое является первым в списке имен соответствующего компьютера в DNS. При ссылке на компьютер из другого домена проблем обычно не возникает -- указывается просто полное имя (например, sky.inp.nsk.su). Внутри же одной локальной сети на каждом компьютере могут быть свои правила -- для одного каноническим является короткое имя, для другого -- полное. Чтобы не разбираться каждый раз, как правильно, проще указывать каждую строчку два раза -- с полным именем и с коротким. Это позволит также иметь единый файл .rhosts на нескольких компьютерах (возможно, с разными понятиями об именах), просто копируя его между ними. Так, наш пример можно переписать следующим образом:
Sky.inp.nsk.su Sky Class.inp.nsk.su Class Class.inp.nsk.su bagira Class bagira |
И в telnet, и в rlogin для выполнения некоторых нестандартных действий (типа завершения) используются так называемые escape-символы -- в первом случае "^]", во втором -- "~". При этом возникает интересный вопрос: а если, к примеру, зайти по telnet на компьютер A, и с него сделать telnet на компьютер B? Escape-символ будет "пойман" telnet'ом с нашего компьютера на A, а "нажать" его тому, который с A на B, никогда не удастся. Аналогично и с rlogin.
Поскольку такая ситуация хоть редко, но возникает, то и telnet, и rlogin могут использовать другой escape-символ -- его можно указать ключом "-e". Таким образом, telnet на A можно запустить с одним символом, с A на B -- с другим, с B на C -- с третьим и т.д.
Если настроен вход без пароля по rlogin, то можно прямо со своего компьютера запускать команды на той машине командой rsh (Remote SHell):
bobby:~% rsh class uname -sn Linux Class.inp.nsk.su bobby:~% _ |
Формат вызова команды rsh такой:
rsh [-l пользователь] <компьютер> <команда>
При использовании rsh надо помнить два правила:
bobby:~% rsh class ls -l inpunix.* zsh: no matches found: inpunix.* bobby:~% rsh class 'ls -l inpunix.*' -rw-r--r-- 1 goofy goofy 1445018 Mar 8 04:06 inpunix.tgz bobby:~% _ |
Прервать команду, запущенную через rsh, обычно можно по Ctrl+C.
Если не указать команду, а просто "rsh <компьютер>", то rsh работает как rlogin. Поэтому обычно (из лени ;) набирают rsh вместо rlogin.
|
Если вход без пароля на удаленном компьютере не разрешен (не настроен файл .rhosts), то пароль запрашиваться не будет -- просто появится сообщение "Permission denied". |
Если настроен вход без пароля по rlogin/rsh, то для копирования файлов с/на удаленный компьютер применять команду rcp (remote cp). В использовании она очень похожа на cp:
rcp <из-какого-файла> <в-какой-файл>
Но в имени файла можно указывать компьютер: например, "sky:/etc/fstab" означает "файл /etc/fstab на компьютере sky". При этом если имя файла не начинается с "/", то оно "считается" с home-директории на удаленном компьютере. Пример:
bobby:/tmp/f% ls -l total 0 bobby:/tmp/f% rsh sky ls -l /etc/fstab -rw-r--r-- 1 root sys 4501 Feb 24 20:07 /etc/fstab bobby:/tmp/f% rcp sky:/etc/fstab . bobby:/tmp/f% ls -l total 5 -rw-r--r-- 1 ivanov lab5 4501 Mar 13 16:41 fstab bobby:/tmp/f% _ |
Если надо "зайти" под пользователем с другим именем, то имя указывается через "@" перед именем компьютера: bagira@class:/etc/issue.
Rcp воспринимает ключи "-r" и "-p" аналогично обычной команде cp.
У rcp есть две тонкости:
из соображений рационализации файл не копируется с host1 к себе и потом на host2, а дается команда компьютеру host1 выполнить rcp на host2. Поэтому файл .rhosts на host2 должен позволять вход с host1 без пароля.rcp host1:file host2:
У программ telnet, rlogin, rsh, rcp есть два недостатка:
Для преодоления этих проблем была создана команда ssh (Secure SHell). Она используется практически так же, как rsh (и есть аналоги rlogin/rcp -- slogin и scp), но применяет для авторизации и передачи данных криптографические алгоритмы. Настраивать ssh несколько сложнее, чем rsh, и о ней будет подробно рассказано в специальной лекции.
<< Предыдущий раздел | /\ Содержание | >> Следующий раздел