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

Когда я только начинал возиться со своим «сервером»,  то настроил доступ к его графическому рабочему столу при помощи NX. Описано это мной на вот этой странице. Но зачастую для решения «управленческих» задач нет нужды запускать «тяжеловесный» графический десктоп, а достаточно всего-лишь «легкой» и быстрой консоли. В случае с Linux-ом все просто — там -клиент присутствует. Но периодически возникает нужда войти в «сервер» из под 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 к программе…

Советую также прочесть следующие записи блога: