Создание файла Casper-RW

Довольно часто в мой блог попадают с вопросом о создании файла casper-rw. Что это за файл такой? Это файл в котором хранятся изменения на загрузочной флешке с Ubuntu. Создание самой флешки уже я описывал на странице «Живая» флешка с Linux-ом (в разделе Persistent mode). Там же есть несколько ссылок на готовые файлы casper-rw. Но, всегда найдется тот, кому имеющиеся варианты не подходят, и нужно создать свой собственный. Вот для таких и написана данная заметка.

Должен сразу сказать, что данная инструкция предполагает ее выполнение на компьютере, работающем под управлением операционной системы Linux.  Как это сделать из под Windows, я увы не знаю (ниже я скажу — почему).

Итак приступим. Первым делом нужно запустить консоль и авторизоваться в ней root-ом (ввести команду su, а потом в ответ на запрос — пароль администратора системы). После этого запускаем команду:

dd if=/dev/zero of=casper-rw bs=1M count=280

По этой команде:

  • запускается программа dd;
  • которая в выходной файл casper-rw (of=casper-rw);
  • записывает нули (if=/dev/zero);
  • в количестве 280 блоков (count=280);
  • каждый блок размером в 1 Мегабайт (bs=1M)

По окончании работы программа выдает вот такой отчет о выполнении:

280+0 записей считано 280+0 записей написано скопировано 293601280 байт (294 MB), 5,72013 c, 51,3 MB/c

Таким образом мы получили тот самый файл с размером …. правильно — 280х1024х1024=293601280 байт. Чтож, задача выполнена? Почти! Файл действительно создан, размер выдержан (и при необходимости, я думаю, вы уже поняли, как сможете задать свой собственный любой требуемый размер). Единственный нюанс — пока что это по прежнему просто файл, забитый нулями. А casper-rw — это не «просто так файл», а файл … внутри которого создана файловая система ext3 (по крайней мере именно такая ФС требуется, если делать файл для использования с загрузочными флешками, создание которых описано в упоминавшейся выше заметке).

И вот теперь пару слов собственно, о том, почему я не знаю, как создать файл casper-rw из под Windows. Бог с ней, с командой dd — уже есть ее аналог для Windows. И устройство «zero», думаю, при необходимости найдется. Но вот как отформатировать файл и создать внутри него файловую систему, работая в ОС Windows, я увы не знаю…

Но вернемся к инструкции, тем более, что мы выполняем ее в Linux-е, и в нем «создать файловую систему внутри файла» я знаю как :)…

Для этого вводим команду:

mkfs.ext3 casper-rw

Первое сообщение, которое программа выведет, это будет запрос подтверждения указанного действия, так как мы пытаемся отформатировать не блочное устройство (читай — не диск). (В принципе, программа очень правильно утверждает — мы ведь действительно форматируем не диск, а файл 😉 ).

mke2fs 1.41.9 (22-Aug-2009) casper-rw is not a block special device. Proceed anyway? (y,n) 

Естественно, соглашаемся и вводим на клавиатуре «y». Процесс займет некоторое время, после чего будет выведен отчет о его выполнении:

Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 71680 inodes, 286720 blocks 14336 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67633152 35 block groups 8192 blocks per group, 8192 fragments per group 2048 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729, 204801, 221185 Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 29 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.

Текста много, не спорю… Но весь он «о хорошем». Иными словами — «done» — это «выполнено». Таким образом форматирование завершено, и мы получили файл casper-rw, внутри которого сформирована файловая система ext3. (Кстати, если нужна другая ФС, просто используйте соответствующую команду, например, mkfs.ext2 для файловой системы ext2). Как нам проверить, что все хорошо? Есть простой способ — смонтируем для этого наш «файл-диск» в какую-нибудь папку:

mount casper-rw /mnt/temp -o loop

Обращаю внимание, что папка /mnt/temp, у меня уже была создана ранее. Вы можете использовать другую, а можете создать и такую же (команду mkdir никто не отменял)… Вернемся к монтированию — если ответом на команду «будет молчание», а не сообщения о каких бы то ни было ошибках, значит, монтирование прошло успешно. Перейдем в папку, куда смонтирован наш «диск»:

cd /mnt/temp

И введем команду:

ls

В ответ мы должны получить следующее:

lost+found/

То есть, на данном этапе единственным содержимым нашего диска является папка lost+found, которую полагается иметь каждому … диску (или разделу диска). Значит, все у нас хорошо! Проверка завершена. Отмонтируем наш «диск»:

umount /mnt/temp

Результатом выполнения описанной выше процедуры стал файл casper-rw, размером 280 Мб. Кстати, те, кому нужен именно такой файл, или те, у кого нет возможности выполнить это все в Linux-е, могут скачать готовый файл по вот этой ссылке. (Естественно, качать 280 Мб нулей не придется — файл сжат zip-ом, и его размер равен ~300 кб).

Ну и теперь вкратце об изменении в процедуре создания флешки с persistent mode, которые нужно нести в процедуру описанную на упоминавшейся уже странице. Перед запуском файла U810.bat (пункт 3-й инструкции) нужно новый (созданный или скачанный) файл casper-rw поместить в папку U810p, заменив им уже имеющийся там такой-же файл размером 1 Гб.

Ну и о размере, использованном в данном примере — он был выбран равным 280 Мб для того, чтобы загрузочную флешку Ubuntu с сохранением изменений можно было создать на драйве размером 1 Гб.

Форматирование флешки в Linux

Как показывает учет статистики моего блога, периодически сюда попадают люди, которые ищут ответ именно на этот вопрос — «Как отформатировать флешки в Linux?»

Итак, наиболее просто это можно сделать с помощью программы Gparted. Как ей пользоваться для изменения разделов жесткого диска, я уже вкратце писал тут. Для форматирования флешки не нужно загружаться в режиме Live-CD, можно просто запустить программу из меню. После этого в программе первым делом нужно выбрать саму флешку (вверху справа, нечто вида /dev/sdx, сориентироваться можно по объему диска в Мб) а потом на выбранном разделе щелкнуть правой кнопкой и выбрать пункт «Форматировать»….

А теперь перейдем к консоли. Зачем? На тот случай, если вдруг графика подводит…

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

su

…и в ответ на запрос вводим пароль администратора. Как стать root-ом в Ubuntu (точнее, задать root-у свой собственный пароль) я уже писал.  Теперь поищем нашу флешку (собственно, как это сделать, я упоминал тут). Повторюсь — для этого вводим следующую команду:

fdisk -l

В ответ получим данные обо всех разделах всех жестких дисков компьютера. В том числе и данные о разделах флешки тоже. Причем, у флешек, плотно эксплуатировавшихся (и форматировавшихся в том числе) под Windows в таблице разделов зачастую такая каша, что линуксовый fdisk выводит весьма «веселые» комментарии:

Диск /dev/sdc: 125 МБ, 125829120 байт
4 heads, 60 sectors/track, 1024 cylinders
Units = цилиндры of 240 * 512 = 122880 bytes
Disk identifier: 0x6f20736b

Это не похоже на таблицу разделов
Возможно, вы выбрали неверное устройство.

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdc1   ?     3242233     7998524   570754815+  72  Неизвестный
Раздел 1 имеет различные физические/логические начала (не-Linux?):
физ=(357, 116, 40) логич=(3242232, 3, 49)
Раздел 1 имеет различные физические/логические окончания:
физ=(357, 32, 45) логич=(7998523, 0, 19)
Раздел 1 не заканчивается на границе цилиндра.
/dev/sdc2   ?      702874     8769658   968014120   65  Novell Netware 386
Раздел 2 имеет различные физические/логические начала (не-Linux?):
физ=(288, 115, 43) логич=(702873, 0, 3)
Раздел 2 имеет различные физические/логические окончания:
физ=(367, 114, 50) логич=(8769657, 1, 22)
Раздел 2 не заканчивается на границе цилиндра.
/dev/sdc3   ?     7791173    15857957   968014096   79  Неизвестный
Раздел 3 имеет различные физические/логические начала (не-Linux?):
физ=(366, 32, 33) логич=(7791172, 3, 6)
Раздел 3 имеет различные физические/логические окончания:
физ=(357, 32, 43) логич=(15857956, 3, 37)
Раздел 3 не заканчивается на границе цилиндра.
/dev/sdc4   ?    12023672    12023903       27749+   d  Неизвестный
Раздел 4 имеет различные физические/логические начала (не-Linux?):
физ=(372, 97, 50) логич=(12023671, 1, 53)
Раздел 4 имеет различные физические/логические окончания:
физ=(0, 10, 0) логич=(12023902, 2, 51)
Раздел 4 не заканчивается на границе цилиндра.

Пункты таблицы разделов расположены не в дисковом порядке

Ну да ладно, нас не шуточные комментарии интересовали. Главную информацию мы получили — в системе наша флешка определилась как /dev/sdc.

Начать я предлагаю все-таки с наведения порядка в таблице разделов. Для этого запустим все тот же fdisk, но уже с указанием того накопителя, который будем рихтовать:

fdisk /dev/sdc

(Естественно, вместо /dev/sdc вы указывайте нужный вам диск). В ответ получим следующее приглашение:

Команда (m для справки):

Чтобы, как говорили в небезызвестной комедии, «огласить весь список, пожалуйста» нажмем на клавиатуре как нам и предлагают букву «m». В ответ получим список возможных команд:

Действие команды
   a   переключение флага загрузки
   b   редактирование метки диска bsd
   c   переключение флага dos-совместимости
   d   удаление раздела
   l   список известных типов файловых систем
   m   вывод этого меню
   n   добавление нового раздела
   o   создание новой пустой таблицы разделов DOS
   p   вывод таблицы разделов
   q   выход без сохранения изменений
   s   создание новой чистой метки диска Sun
   t   изменение id системы раздела
   u   изменение единиц измерения экрана/содержимого
   v   проверка таблицы разделов
   w   запись таблицы разделов на диск и выход
   x   дополнительная функциональность (только для экспертов)

Первым делом удалим все те «смешные и странные» разделы. Как удалим? Да так, полностью, окончательно и бесповоротно! Зачем удалим? Так вы ж ведь флешку вобще-то форматировать собирались…

Данный этап процедуры я позволю себе назвать «первой красной меткой». Суть данного маркера в том, что выполняемые нами далее действия выглядят как деструктивные — мы что-то вроде как удаляем, что-то создаем. Однако, на данном этапе мы на самом деле еще не будем вносить какие-либо изменения в таблицу разделов диска. Реальные изменения будут выполнены позже, и об этом я вас извещу «второй красной меткой»…

Начинаем удалять — а именно — нажимать на клавиатуре букву «d». На предложение выбрать раздел, нажимаем последовательно сначала «1» (чтобы удалить первый раздел диска) :

Команда (m для справки): d
Номер раздела (1-4): 1

…потом снова «d» и «2» (второй раздел), «d» и «3» (третий раздел) и возможно «d» и «4» (четвертый). Показателем того, что уже пора остановиться, будет следующее сообщение от fdisk, появляющееся в ответ на очередное нажатие кнопки «d» :

Разделы еще не определены!

То есть, все разделы мы удалили. Теперь создадим новый. Для этого нажмеме кнопку «n» на клавиатуре:

Команда (m для справки): n
Действие команды
e   расширенный
p   основной раздел (1-4)

Создавать мы будем основной раздел. И для этого нажмем кнопку «p» на клавиатуре:

Номер раздела (1-4):

Создадим первый раздел. Для этого нажмем «1» на клавиатуре:

Первый цилиндр (1-1024, по умолчанию 1):

Значение по умолчанию нас полностью устраивает (нам же не нужно пустое место вначале флешки?). По этому чтобы создать разел начиная с самого первого «цилиндра» просто нажимаем «Enter» на клавиатуре:

Используется значение по умолчанию 1
Last цилиндр, +цилиндры or +size{K,M,G} (1-1024, по умолчанию 1024):

По умолчанию программа нам предлагает номер самого последнего «цилиндра». При этом новый раздел будет создан на весь размер флешки. Если Вы как и я, планируете всю флешку использовать как один диск, то просто согласитесь с предложенным выбором. Если же Вы хотите разбить флешку на несколько разделов, то тут нужно задать точку окончания первого раздела. Простейший способ — это указать требуемый размер раздела способом, который предложил сам fdisk — «+ КОЛИЧЕСТВО (ЕДИНИЦ ИЗМЕРЕНИЯ)». Например ввод «+1000М» создаст раздел размером 1000 Мегабайт. Лично я создавал один единственный раздел, и потому просто нажал «Enter» на клавиатуре:

Используется значение по умолчанию 1024

На этом лично я с созданием разделов закончил. Если же Вы планировали создание на диске нескольких разделов, то снова возвращайтесь к процессу создания (кнопка «n»), вводите следующий (а не 1-й) номер раздела, соглашайтесь с номером цилиндра начала раздела (fdisk корректно предложит первый свободный после первого раздела), указывайте размер раздела, и т.д. как говорится, до «полного удовлетворения»…

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

И вот пришло время «второй красной метки». Следующая команда запишет на диск новую таблицу разделов, которую мы только что создали. Самое время лишний раз всё перепроверить, и если в чем-то допустили ошибку, вернуться к началу и исправить ее. Если же все нормально, то двигаемся далее.

Итак, вводим команду «w» с клавиатуры:

Таблица разделов была изменена!

Вызывается ioctl() для перечитывания таблицы разделов.
Синхронизируются диски.

ВОТ ИМЕННО В ЭТОТ МОМЕНТ новая таблица разделов и была записана на флешку. После этого Вы снова вернетесь в консоль.

И вот наконец-то мы добрались до … форматирования 🙂 .

Команда форматирования раздела в Linux выглядит следующим образом:

mkfs [-V] [-t тип_фс] [опции_фс] устройство [размер]

Нам в нашем процессе форматирования флешки потребуется указать два параметра. Наиболее важным будет параметр -t — тип файловой системы. Если флешку планируется использовать с Windows, то нужно использовать файловую систему FAT (отформатировать флешку в NTFS Linux,увы, не сможет). В этом случае параметр указывается как «vfat» Если же флешка будет использоваться для работы только с Linux, то можно использовать файловые системы ext2 или ext3. В этих случаях ключу -t тип файловой системы прямо так и указываете (ext2 или ext3).

Второй параметр — это номер того раздела, который мы планируем отформатировать. Раньше мы уже определили, что флешку нашу Linux видит как диск /dev/sdc, а раздел на ней мы создавали 1-й. Но, перепроверим на всякий случай еще раз:

fdisk -l

и получим ответ

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdc1               1        1024      122850   83  Linux

Как видим, «каши» в таблице разделов флешки теперь не наблюдается, там всего один раздел /dev/sdc1, и именно его нам и нужно отформатировать. Чтобы отформатировать флешку в файловую систему FAT, вводим следующую команду:

mkfs -t vfat /dev/sdc1

Если хотим использовать файловую систему ext2, то команда должна быть следующая:

mkfs -t ext2 /dev/sdc1

Ну и для ext3, соответственно:

mkfs -t ext3 /dev/sdc1

Флешка будет отформатирована соответствующим образом.

Кстати, при самой первой попытке отформатировать диск в файловую систему FAT меня ждал сюрприз. Оказывается в моей Mandriva утилита для форматирования в FAT вынесена в отдельный пакет и по умолчанию не устанавливается. Пришлось установить ее следующей командой

urpmi dosfstools

Вот и все…

PS. Те же самые процедуры используются и для работы с жестким диском…

Просмотр *.iso файлов в Midnight Commander

«Была-была и куда-то делась» возможность просматривать содержимое *.iso файлов (образов CD и DVD дисков) непосредствено в оболочке Midnight Commander. А как же было удобно — жмешь Enter на имени файла и ты уже внутри него — просматриваешь содержимое…

Что уж я намудрил, не знаю, но стало вместо просмотра вываливаться сообщение об ошибке — не найден isoinfo. Чтож, поищем, «какой-такой» пакет нужно установить? Ввел я команду:

urpmf isoinfo

... и получил ответ:
cdrkit-isotools:/usr/bin/isoinfo
cdrkit-isotools:/usr/share/man/man1/isoinfo.1.lzma

Как видим, искомая команда (isoinfo) нашлась в пакете cdrkit-isotools. Прекрасно, вот его-то и устанавливаем:

urpmi cdrkit-isotools

Всё! Просмотр образов дисков непосредственно в Midnight Commander снова работает…

Putty — вход в консоль Linux из Windows

Когда я только начинал возиться со своим «сервером»,  то настроил доступ к его графическому рабочему столу при помощи NX. Описано это мной на вот этой странице. Но зачастую для решения «управленческих» задач нет нужды запускать «тяжеловесный» графический десктоп, а достаточно всего-лишь «легкой» и быстрой консоли. В случае с Linux-ом все просто — там ssh-клиент присутствует. Но периодически возникает нужда войти в «сервер» из под Windows. Для этой цели лично я пользуюсь программой PuTTY. Причина моего выбора проста — программа бесплатная, кроме того, она легко устанавливается и также легко настраивается.

Итак, для начала идем на домашнюю страницу программы и качаем инсталятор программы. (Если приведенные мной ссылки устарели, просто «Google-им» по-быстренькому). Устанавливаем. Думаю, тут не возникнет никаких трудностей.

Запускаем PuTTY (обычно это — «Пуск» -> «Программы» -> «PuTTY» -> «PuTTY»).  И видим вот такое окно настройки и запуска PuTTY:

putty_main
Рис. 1 Окно настройки и запуска PuTTY

Чтобы, как говорится, ну совсем уж «по-быстрому»», достаточно всего лишь в поле «Host name (or IP adress)» ввести, как нас и просят, либо имя, либо IP-адрес компьютера, к которому мы будем подключаться и затем щелкнуть кнопку «Open«. В принципе, стоило бы сначала еще подредактировать пару настроек, ну да ладно, мы ведь очень торопимся. К настройкам мы еще вернемся позже, а пока… Если Вы подключаетесь к выбранному компьютеру в первый раз, то получите вот такое сообщение:

putty_host_key
Рис. 2 Запрос на запись ключа удаленного компьютера

Суть его в том, что Вам предлагают убедиться — а к тому ли удаленному компьютеру Вы подключаетесь, и если «да», то сохранить его ключ, чтобы избежать подобного вопроса в будущем. Вы можете сохранить ключ (ответ «Да»), не сохранять ключ (ответ «Нет») и прервать соединение (кнопка «Отмена»). Кстати, такой же самый вопрос Вы получите снова, если попытаетесь обратится к тому же удаленному компьютеру, но уже с использованием другого имени (например, раньше Вы подключались к нему по IP-адресу и сохранили ключ, а теперь пытаетесь подключиться по имени компьютера).

Чтобы продолжить подключение к удаленному компьютеру, жмем «Да». (Можно выбрать и «Нет», но тогда при следующем подключении Вам придется снова отвечать на вопрос о ключе). В любом случае запустится окно консоли, и Вам будет предложено осуществить вход в систему в (скажем так) «ручном» режиме:

ptty_login1
Рис. 3 Процесс входа с вводом имени пользователя и пароля с клавиатуры

Как видно на приведенном выше рисунке, при «ручном» входе первым делом Вы должны указать пользователя, от имени которого подключаетесь к удаленному компьютеру. Затем следует запрос пароля. Если введенные Вами имя и пароль приняты компьютером, то выводится информация о дате и времени предыдущего входа данного пользователя в систему, после чего появляется приглашение — Вы в консоли удаленного компьютера. Можно рулить!..

На что при этом стоит обратить еще внимание, так это на настройку SSH-демона на «принимающей стороне» (в Linux-сервере).  У него может быть запрещена авторизация (вход) по паролю. Вкратце я об этом упоминал тут (параметр «PasswordAuthentication» и его два возможных значения — «yes» и «no»). В случае, если авторизация по паролю запрещена, подключиться так, как только что было описано выше, не получится. В этом случае нужно настраивать доступ по ключу (об этом ниже).

«Нарулившись», вводим комманду «exit» — консоль закрывается, соединение с удаленным компьютером разрывается.

Теперь вернемся к той «парочке настроек», о которой я упоминал выше. Чтобы убедиться в необходимости одной из них, достаточно просто запустить Midnight Commander, или же найти файлы с кирилицей в именах. «Кракозябры»!!! Дело в том, что в подавляющем большинстве дистрибутивов Linux используется кодировка UTF-8, в то время, как в PuTTY по умолчанию включена KOI8-U. Поэтому, если не менять кодировку, то будут проблемы как с отображением кирилицы, так и с отображением псевдографики. Выглядеть это будет примерно так:

putty_wrong_locale
Рис. 4 "бНОПНЯ", обусловленная неправильной настройкой кодировки, а также, вызов контекстного меню PuTTY

Поправить настройку локали можно «по-быстрому», даже не выходя из консоли. Нужно лишь мышью «щелкнуть» в левом верхнем углу окна PuTTY. Появится выпадающее меню (как показано на рис. 4 выше). В меню нужно выбрать пункт «Change Settings«.  Появится то же самое окно настройки и запуска PuTTY, которое мы наблюдали в самом начале (см. рис. 1). В данном меню сначала нужно в левой колонке выбрать пункт «Translation«, затем в правой чвасти меню в выпадающем списке выбрать кодировку UTF-8, и потом внизу справа нажать кнопку «Apply» (как показано на рис. 5 ниже).

putty_tranlation
Рис. 5 Выбор локали (кодировки)

Внимание! Уже отображенные в окне консоли «кракозябры» после смены кодировки таковыми и останутся. Изменения будут видны лишь после перерисовки экрана (например, нажатия Ctrl+R в Midnight Commander)…

Вторая настройка не является критической. Лично я обчно её настраиваю для себя т.к. уже подслеповат. Это возможность выбрать вид и размер шрифта, используемого в консоли PuTTY. Для этого в окне настройки в левой колонке выбираем пункт «Appearance» (см. рис. 6):

putty_font_change
Рис. 6 Изменение шрифта

В правой части меню при этом появится раздел «Font setting». В нем выбираем кнопку «Change«. Откроется окно выбора шрифта, стандартное для многих приложений Windows. В нем выбираем и шрифт, и его размер, как говорится, «по вкусу», и затем жмем кнопку «ОК». Вернувшись в окно настройки,  нажимаем кнопку «Apply»  внизу справа. Изменение этой настройки меняет вид шрифта в окне консоли сразу же.

Недостаток изменения настроек «по быстрому» лишь один — указанные нами значения действуют только на время текущего сеанса и сбрасываются после его закрытия. Согласитесь, неудобно каждый раз работу начинать с того, что настраивать кодировки, шрифты, и т.д. и т.п. По этому, PuTTY позволяет создать сессию (сеанс) и сохранить все настройки в ней. Чтобы создать и сохранить новый сеанс, если сессия у Вас уже запущена, сначала завершите ее командой «exit«. Затем, по-новой запустите PuTTY («Пуск» -> «Программы» -> «PuTTY» -> «PuTTY»).  Мы снова видим окно настройки и запуска PuTTY. Но вместо того, чтобы просто вводить адрес и жать «Open«, мы выполним следующее:

putty_save_session
Рис. 7 Сохранение сессии
  1. Вводим имя или IP-адрес удаленного компьютера.
  2. Проверяем номер порта к которому подключаемся. В большистве случаев SSH-демон Linux-компьютеров настроен ожидать подключения именно на 22-иу порту. Но иногда администраторы меняют номер порта в целях безопасности или по иным причинам. Если у удаленного компьютера, к которому Вы планируете подключаться,  SSH-демон настроен на прослушивание порта с другим номером, то введите в это поле правильное значение.
  3. Проверяем, что подключаемся по протоколу SSH. (Вообще, программа PuTTY позволяет подключаться к различным службам).
  4. Вводим имя сессии. (Это имя Вы придумываете сами — как хотите, так и называйте).
  5. Нажимаем кнопку «Save«.

Все! Сессия сохранена. После этого можно настроить кодировку и шрифт, как показано выше (рис. 5 и 6). Выполнив изменения, возвращаемся в закладку «Session» и снова нажимаем кнопку «Save«. До изменения любых параметров убедитесь в том, что имя сессии присутствует в поле, на которое указвает указатель №4 на рис. 7. Если там пусто, то сначала нужно выбрать  имя своей сессии в списке начинающмся с пункта «Default settings» и шелкнуть кнопку «Load» справа.  Лишь после этого имеет смысл менять и сохранять настройки сессии…

Впоследствии, когда сессия создана, ей присвоено имя, и все настройки выполнены и сохранены, то для того, чтобы запустить сеанс, достаточно будет лишь дважды щелкнуть на имени сессии в списке (пониже  «Default settings»), а затем — все как на рис. 3 выше — логин, пароль… И еще — Вы можете сохранить не одну сессию, а столько, сколько Вам понадобится (если есть необходимость подключаться к разным компьютерам).

На этом можно было бы и поставить точку. Если бы не лень! О чем это я? Да о том, что лично мне лень каждый раз при старте сессии вводить имя пользователя и пароль! А что, можно и не вводить? Да, можно! По крайней мере, вручную… SSH-демон допускает автоматическую аутентификацию по ключу вместо пароля, а PuTTY предоставляет возможность указать имя пользователя, используемое при входе в удаленный компьютер. В итоге — вот так выглядит процедура входа в автоматическом режиме:

putty_login_auto
Рис. 8 Вход в автоматическом режиме

Как мы видим на приведенном рисунке, при авторизации программа сама подставляет имя пользователя «dmitry», а вместо пароля используется публичный ключ «rsa-key-20090211». Таким образом, мое вмешательство в процесс подключения к серверу минимизировано и по сути сведено к двойному щелчку мышью по имени выбранного сеанса. Для такого лентяя как я — в самый раз. Но, и для злоумышленника, который захочет взломать Ваш сервер — это тоже прекрасный подарок! По этому, настройку такого подключения стоит осуществлять лишь на тех компьютерах, про которые Вы уверены, что ими никто другой не пользуется, и не сможет использовать эту дыру в безопасности для доступа к Вашему серверу.

Начать стоит с генерации ключей. Для этой цели в комплекте с PuTTY поставляется программа PuTTYgen. Ее назначение — как раз генерировать эти самые файлы ключей. На компьютере, с которого планируем подключатся к серверу, запускаем PuTTYgen: «Пуск» -> «Программы» -> «PuTTY» -> «PuTTYgen»

PuTTYgen - генерация SSH ключа
Рис.9 программа PuTTYgen - генератор SSH ключей

И в программе этой выполняем следующие действия:

  1. Нажимаем кнопку «Generate«. После нажатия начинаем хаотично перемещать мышку по столу. При этом идет генерация ключа. Ход процесса показывает растущая слева напараво полоса индикации.
  2. После того, как ключ сгенерирован (пропадат индикатор прогресса, а вместо него появляются данные о ключе как на рис.9), жмем кнопку «Save public key«, чтобы соохранить файл т.н. «публичного» ключа. Назовем его, например, id_rsa.pub.
  3. Затем нажмем кнопку «Save private key«, чтобы сохранить файл т.н. «приватного» ключа. Назовем его, например, id_rsa.ppk.

Порядок сохранения ключей (кого первым, кого последним) — неважен. Важно лишь не забыть, куда мы их сохранили. Ключи эти парные. Приватный ключ хранится на компьютере, с которого осуществляется доступ. А публичный должен быть импортирован на сервер в специальный файл SSH-ключей того пользователя, от имени которого мы будем впоследствии подключаться. Для этого файл  id_rsa.pub нужно скопировть на сервер (дискетой, флешкой, почтой, ftp — как Вам будет удобно). А затем его нужно импортировать в файл ключей сервера, которй хранится у каждого пользователя в его «домашней» папке в подпапке .ssh и называется authorized_keys. Для этого нужно выполнить команду:

ssh-keygen -i -f id_rsa.pub >> $HOME/.ssh/authorized_keys

ВНИМАНИЕ!

  1. Команда эта должна выполняться уже в консоли сервера, к которому мы впоследствии будем подключаться по ключу. Поэтому, чтобы ее выполнить, сначала нужно войти в консоль сервера в «ручном» режиме, введя имя пользователся и пароль на клавиатуре.
  2. Команда должна выполнятться из той самой директории (папки), в которую был скопирован файл id_rsa.pub. В противном случае в команде нужно будет указать полный путь к файлу ключа.
  3. Команду необхдимо выполнять от имени того пользователя, который впоследствии будет осуществлять подключение к серверу.

Теперь сервер готов к авторизации данного пользователя по ключу. Осталось лишь настроить PuTTY на использование этого самого ключа. Для этого в окне настройки в левой колонке выбираем пункт «SSH», а в нем подпункт «Auth». В правой половине открывшегося окна жмем  кнопку «Browse» и указываем месторасположение второго файла ключа — id_rsa.ppk. (см. рис. 10 ниже)

Выбор файла ключа
Рис. 10 Настройка PuTTY на использование файла приватного ключа.

Теперь при соединении с сервером PuTTY будет использовать указанный файл ключа вместо пароля. Ну и последнее, что осталось сделать, это указать PuTTY какое имя пользователя подставлять при подключении к серверу. Для этого в окне настройки в левой колонке выбираем пункт «Data«, а в правой половине окна в поле «Auto-login username» вводим имя пользователя (как показано на рис. 11 ниже).

putty_user
Рис. 11 Ввод имени пользователя для автоматического входа в систему

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

Почитать подробнее про SSH, а также настройку этой службы на сервере можно по ссылкам:

  1. http://www.opennet.ru/base/sec/ssh_intro.txt.html
  2. http://baybox.narod.ru/linux/putty.html
  3. http://www.pentarh.com/wp/2008/07/21/ssh-public-key-authentication/

А если все-таки чуток GUI ?..

Иногда все-таки вознкает необходимость запустить программу с графическим интерфейсом. Одну-одинешеньку, а не весь десктоп. В случае, когда мы с одного компьютера, работающего под управлением Linux, подключаемся по SSH к другому компьютеру, также работающему под управлением Linux, с этим нет никаких проблем. Дело в двух нюансах. Первый — само построение сервера графической подсистемы X-Window, позволяющее сформировать «каартинку» одним Х-сервером, переслать его, например, по сети на другой и воспроизвести уже там. Второй нюанс — SSH-демон поддерживает X-форвардинг (параметр, вкючается в файле настроек sshd). С SSH для Windows мы разобрались выше. Но вот при запуске какой-нибудь GUI-программы в сессии PuTTY мы получаем ообщение о том, что Х-сервер не найден. И это верно — в Windows нет никакого Х-сервера. Надо бы «организовать присутствие»! И в этом нам может помочь еще одна программа — Xming. Сайт проекта — тут, почитать можно (на английском) — тут. Идем, качаем, устанавливаем.

Запускаем Xlaunch («Пуск» -> «Программы» -> «Xming» -> «Xlaunch»). Эта программа настраивает Xming. Настраиваем (в принципе, там все вполне понятно). Единственный нюанс — это раскладки клаватуры. Их параметры задаются дополнительными опциями в одном из окон конфигурирования. Подробнее можно прочесть например тут (ну или же в документации 😉 )…  После настройки запускаем Xming («Пуск» -> «Программы» -> «Xming» -> «Xming»). Единственное, что видим при этом — добавившуюся в трей возле часов иконку программы («сервер» все-таки)…

Теперь нужно настроить X-форвардинг в PuTTY. Для этого запускамем окно кофигурирования PuTTY (если SSH-сеанс был уже запущен, из него обязательно нужно выйти).  В окне Session выбираем и загружаем (кнопкой «Load«) свою сессию. Потом в левой колонке выбираем пункт «X11» (Connection -> SSH -> X11) и там ставим галочку «Enable X11 forwarding» (см. рис. 12 ниже):

putty_x_forvard
Рис. 12. Включение в PuTTY форвардинга X-Window

После этого сохраняем параметры и запускаем сеанс по-новой. В консоли запускаем какую-нибудь программу, имеющую графический интерфейс. Например, если на Linux-компьютере используется графический десктоп KDE, то можно попробовать запустить Konqueror. Вводим с командной строке «konqueror», немножко ждем и наблюдаем:

putty_x_window
Рис. 13 GUI-приложение (Konqueror), запущенное из консоли PuTTY на графический десктоп Windows

Вот и все…

Еще чуток о кракозябрах…

На форуме LinuxForum прочел тему в которой у пользователя возникли вопросы уже, скажем так, по поводу нюансов. Цитирую:

Вопрос скорее относится к рюшечкам, т.к. все функции работают. Есть несколько серверов на SuSE от 9.3 до 10.3 и при работе с ними через Putty при запуске Yast в консольном режиме, вместо псевдографики рисуются буквы (приходится вглядываться, где поле кончается для ввода текста и т.п.). Причем, если запустить mc, то вся псевдографика отображается корректно. Попробовал с одного сервака зайти на другой через ssh — все также отображается корректно, поэтому сделал вывод, что это заморочки либо Putty, либо самого Yast. (Translation в Putty выставлена корректно, русский текст и ввод с клавиатуры — ок)

Решил и я проверить свою Mandriva на это дело. Запустил из Windows коноль в PuTTy, а Xming при этом не запустил. После этого в консоли запустил mcc (Mandriva Control Center — Центр управления Mandriva). Дело в том, что когда нет возможности запустить Центр управления Mandriva в чисто графическом виде (нет «принимающего» X-сервера), он стартует в псевдографике. Оказалось, что и у меня тоже «с буковками вместо границ». Вот так:

wrong_borders_of_mcc
Рис. 14 - Неверное отображение границ в псевдографике

В указанной теме форума присутствовал и вариант решения проблемы:

Это глюк Putty.
Идём в terminal -> Keyboard -> The Function keys and keypads ставим Linux
Идём в Connection -> Data, в графе Terminal-type string пишем linux

Попробовал — действительно границы нарисовало как надо. Однако быстро обнаружились два нюанса. Первый — некорректная работа половины функциональных клавиш. Исправилось простым возвращением значения «xterm» (как собственно и было изначально) для параметра «Keyboard » — «The Function keys and keypads». А вот второй нюанс мое естество так и не смогло «принять»! Дело в том, что совсем по другому стала использоваться мышь. Этот факт я не вынес, и решил, что пусть лучше уж «границы из буковок», но мышь пусть работает «так как было». Поэтому, вернул я назад «xterm» и в параметре «Terminal-type» тоже, созранил настройки и работаю дальше. Хотя, может стоило бы почитать help к программе…

Как стать root-ом в Ubuntu Live CD

Я периодически использую Ubuntu именно в режиме загрузки с компакт-диска (т.н. Live CD). Причем, в последнее время, благодаря публикациям данного сайта, загрузку выполняю уже не с диска, а с флешки…

И все хорошо, но вот только загрузившись в режиме Live CD, мне иногда так не хватает возможности стать root-ом. Обычно, советуют выполнять:

sudo ‘команда

… мол, у пользователя ubuntu, да с паролем ubuntu, есть все административные права… Хорошо, наверное, но все-таки хочется root-а. А пароль как пишет сама Ubuntu в своей документации, «засекречен из соображений безопасности»… Выход есть, и довольно простой — в консоли выполняем команду

sudo passwd root

На приглашение вводим пароль (сами придумываете какой), затем вводим его повторно, и все — у Вас есть свой собственный пароль root-а! После этого, вводим в консоли

su

… и на запрос вводим  свой новый пароль.