Когда я только начинал возиться со своим «сервером», то настроил доступ к его графическому рабочему столу при помощи NX. Описано это мной на вот этой странице. Но зачастую для решения «управленческих» задач нет нужды запускать «тяжеловесный» графический десктоп, а достаточно всего-лишь «легкой» и быстрой консоли. В случае с Linux-ом все просто — там ssh-клиент присутствует. Но периодически возникает нужда войти в «сервер» из под Windows. Для этой цели лично я пользуюсь программой PuTTY. Причина моего выбора проста — программа бесплатная, кроме того, она легко устанавливается и также легко настраивается.
Итак, для начала идем на домашнюю страницу программы и качаем инсталятор программы. (Если приведенные мной ссылки устарели, просто «Google-им» по-быстренькому). Устанавливаем. Думаю, тут не возникнет никаких трудностей.
Запускаем PuTTY (обычно это — «Пуск» -> «Программы» -> «PuTTY» -> «PuTTY»). И видим вот такое окно настройки и запуска PuTTY:
Чтобы, как говорится, ну совсем уж «по-быстрому»», достаточно всего лишь в поле «Host name (or IP adress)» ввести, как нас и просят, либо имя, либо IP-адрес компьютера, к которому мы будем подключаться и затем щелкнуть кнопку «Open«. В принципе, стоило бы сначала еще подредактировать пару настроек, ну да ладно, мы ведь очень торопимся. К настройкам мы еще вернемся позже, а пока… Если Вы подключаетесь к выбранному компьютеру в первый раз, то получите вот такое сообщение:
Суть его в том, что Вам предлагают убедиться — а к тому ли удаленному компьютеру Вы подключаетесь, и если «да», то сохранить его ключ, чтобы избежать подобного вопроса в будущем. Вы можете сохранить ключ (ответ «Да»), не сохранять ключ (ответ «Нет») и прервать соединение (кнопка «Отмена»). Кстати, такой же самый вопрос Вы получите снова, если попытаетесь обратится к тому же удаленному компьютеру, но уже с использованием другого имени (например, раньше Вы подключались к нему по IP-адресу и сохранили ключ, а теперь пытаетесь подключиться по имени компьютера).
Чтобы продолжить подключение к удаленному компьютеру, жмем «Да». (Можно выбрать и «Нет», но тогда при следующем подключении Вам придется снова отвечать на вопрос о ключе). В любом случае запустится окно консоли, и Вам будет предложено осуществить вход в систему в (скажем так) «ручном» режиме:
Как видно на приведенном выше рисунке, при «ручном» входе первым делом Вы должны указать пользователя, от имени которого подключаетесь к удаленному компьютеру. Затем следует запрос пароля. Если введенные Вами имя и пароль приняты компьютером, то выводится информация о дате и времени предыдущего входа данного пользователя в систему, после чего появляется приглашение — Вы в консоли удаленного компьютера. Можно рулить!..
На что при этом стоит обратить еще внимание, так это на настройку SSH-демона на «принимающей стороне» (в Linux-сервере). У него может быть запрещена авторизация (вход) по паролю. Вкратце я об этом упоминал тут (параметр «PasswordAuthentication» и его два возможных значения — «yes» и «no»). В случае, если авторизация по паролю запрещена, подключиться так, как только что было описано выше, не получится. В этом случае нужно настраивать доступ по ключу (об этом ниже).
«Нарулившись», вводим комманду «exit» — консоль закрывается, соединение с удаленным компьютером разрывается.
Теперь вернемся к той «парочке настроек», о которой я упоминал выше. Чтобы убедиться в необходимости одной из них, достаточно просто запустить Midnight Commander, или же найти файлы с кирилицей в именах. «Кракозябры»!!! Дело в том, что в подавляющем большинстве дистрибутивов Linux используется кодировка UTF-8, в то время, как в PuTTY по умолчанию включена KOI8-U. Поэтому, если не менять кодировку, то будут проблемы как с отображением кирилицы, так и с отображением псевдографики. Выглядеть это будет примерно так:
Поправить настройку локали можно «по-быстрому», даже не выходя из консоли. Нужно лишь мышью «щелкнуть» в левом верхнем углу окна PuTTY. Появится выпадающее меню (как показано на рис. 4 выше). В меню нужно выбрать пункт «Change Settings«. Появится то же самое окно настройки и запуска PuTTY, которое мы наблюдали в самом начале (см. рис. 1). В данном меню сначала нужно в левой колонке выбрать пункт «Translation«, затем в правой чвасти меню в выпадающем списке выбрать кодировку UTF-8, и потом внизу справа нажать кнопку «Apply» (как показано на рис. 5 ниже).
Внимание! Уже отображенные в окне консоли «кракозябры» после смены кодировки таковыми и останутся. Изменения будут видны лишь после перерисовки экрана (например, нажатия Ctrl+R в Midnight Commander)…
Вторая настройка не является критической. Лично я обчно её настраиваю для себя т.к. уже подслеповат. Это возможность выбрать вид и размер шрифта, используемого в консоли PuTTY. Для этого в окне настройки в левой колонке выбираем пункт «Appearance» (см. рис. 6):
В правой части меню при этом появится раздел «Font setting». В нем выбираем кнопку «Change«. Откроется окно выбора шрифта, стандартное для многих приложений Windows. В нем выбираем и шрифт, и его размер, как говорится, «по вкусу», и затем жмем кнопку «ОК». Вернувшись в окно настройки, нажимаем кнопку «Apply» внизу справа. Изменение этой настройки меняет вид шрифта в окне консоли сразу же.
Недостаток изменения настроек «по быстрому» лишь один — указанные нами значения действуют только на время текущего сеанса и сбрасываются после его закрытия. Согласитесь, неудобно каждый раз работу начинать с того, что настраивать кодировки, шрифты, и т.д. и т.п. По этому, PuTTY позволяет создать сессию (сеанс) и сохранить все настройки в ней. Чтобы создать и сохранить новый сеанс, если сессия у Вас уже запущена, сначала завершите ее командой «exit«. Затем, по-новой запустите PuTTY («Пуск» -> «Программы» -> «PuTTY» -> «PuTTY»). Мы снова видим окно настройки и запуска PuTTY. Но вместо того, чтобы просто вводить адрес и жать «Open«, мы выполним следующее:
- Вводим имя или IP-адрес удаленного компьютера.
- Проверяем номер порта к которому подключаемся. В большистве случаев SSH-демон Linux-компьютеров настроен ожидать подключения именно на 22-иу порту. Но иногда администраторы меняют номер порта в целях безопасности или по иным причинам. Если у удаленного компьютера, к которому Вы планируете подключаться, SSH-демон настроен на прослушивание порта с другим номером, то введите в это поле правильное значение.
- Проверяем, что подключаемся по протоколу SSH. (Вообще, программа PuTTY позволяет подключаться к различным службам).
- Вводим имя сессии. (Это имя Вы придумываете сами — как хотите, так и называйте).
- Нажимаем кнопку «Save«.
Все! Сессия сохранена. После этого можно настроить кодировку и шрифт, как показано выше (рис. 5 и 6). Выполнив изменения, возвращаемся в закладку «Session» и снова нажимаем кнопку «Save«. До изменения любых параметров убедитесь в том, что имя сессии присутствует в поле, на которое указвает указатель №4 на рис. 7. Если там пусто, то сначала нужно выбрать имя своей сессии в списке начинающмся с пункта «Default settings» и шелкнуть кнопку «Load» справа. Лишь после этого имеет смысл менять и сохранять настройки сессии…
Впоследствии, когда сессия создана, ей присвоено имя, и все настройки выполнены и сохранены, то для того, чтобы запустить сеанс, достаточно будет лишь дважды щелкнуть на имени сессии в списке (пониже «Default settings»), а затем — все как на рис. 3 выше — логин, пароль… И еще — Вы можете сохранить не одну сессию, а столько, сколько Вам понадобится (если есть необходимость подключаться к разным компьютерам).
На этом можно было бы и поставить точку. Если бы не лень! О чем это я? Да о том, что лично мне лень каждый раз при старте сессии вводить имя пользователя и пароль! А что, можно и не вводить? Да, можно! По крайней мере, вручную… SSH-демон допускает автоматическую аутентификацию по ключу вместо пароля, а PuTTY предоставляет возможность указать имя пользователя, используемое при входе в удаленный компьютер. В итоге — вот так выглядит процедура входа в автоматическом режиме:
Как мы видим на приведенном рисунке, при авторизации программа сама подставляет имя пользователя «dmitry», а вместо пароля используется публичный ключ «rsa-key-20090211». Таким образом, мое вмешательство в процесс подключения к серверу минимизировано и по сути сведено к двойному щелчку мышью по имени выбранного сеанса. Для такого лентяя как я — в самый раз. Но, и для злоумышленника, который захочет взломать Ваш сервер — это тоже прекрасный подарок! По этому, настройку такого подключения стоит осуществлять лишь на тех компьютерах, про которые Вы уверены, что ими никто другой не пользуется, и не сможет использовать эту дыру в безопасности для доступа к Вашему серверу.
Начать стоит с генерации ключей. Для этой цели в комплекте с PuTTY поставляется программа PuTTYgen. Ее назначение — как раз генерировать эти самые файлы ключей. На компьютере, с которого планируем подключатся к серверу, запускаем PuTTYgen: «Пуск» -> «Программы» -> «PuTTY» -> «PuTTYgen»
И в программе этой выполняем следующие действия:
- Нажимаем кнопку «Generate«. После нажатия начинаем хаотично перемещать мышку по столу. При этом идет генерация ключа. Ход процесса показывает растущая слева напараво полоса индикации.
- После того, как ключ сгенерирован (пропадат индикатор прогресса, а вместо него появляются данные о ключе как на рис.9), жмем кнопку «Save public key«, чтобы соохранить файл т.н. «публичного» ключа. Назовем его, например, id_rsa.pub.
- Затем нажмем кнопку «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
ВНИМАНИЕ!
- Команда эта должна выполняться уже в консоли сервера, к которому мы впоследствии будем подключаться по ключу. Поэтому, чтобы ее выполнить, сначала нужно войти в консоль сервера в «ручном» режиме, введя имя пользователся и пароль на клавиатуре.
- Команда должна выполнятться из той самой директории (папки), в которую был скопирован файл id_rsa.pub. В противном случае в команде нужно будет указать полный путь к файлу ключа.
- Команду необхдимо выполнять от имени того пользователя, который впоследствии будет осуществлять подключение к серверу.
Теперь сервер готов к авторизации данного пользователя по ключу. Осталось лишь настроить PuTTY на использование этого самого ключа. Для этого в окне настройки в левой колонке выбираем пункт «SSH», а в нем подпункт «Auth». В правой половине открывшегося окна жмем кнопку «Browse» и указываем месторасположение второго файла ключа — id_rsa.ppk. (см. рис. 10 ниже)
Теперь при соединении с сервером PuTTY будет использовать указанный файл ключа вместо пароля. Ну и последнее, что осталось сделать, это указать PuTTY какое имя пользователя подставлять при подключении к серверу. Для этого в окне настройки в левой колонке выбираем пункт «Data«, а в правой половине окна в поле «Auto-login username» вводим имя пользователя (как показано на рис. 11 ниже).
Выполнив эти два пункта (выбор имени и ключа) не забываем сохранить сессию, как показано на рис. 7 выше. Все. Отныне при запуске этой сессии PuTTY будет автоматом подставлять и имя пользователя и ключ (вместо пароля). При этом ничего руками вводить не нужно будет.
Почитать подробнее про SSH, а также настройку этой службы на сервере можно по ссылкам:
- http://www.opennet.ru/base/sec/ssh_intro.txt.html
- http://baybox.narod.ru/linux/putty.html
- 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 ниже):
После этого сохраняем параметры и запускаем сеанс по-новой. В консоли запускаем какую-нибудь программу, имеющую графический интерфейс. Например, если на Linux-компьютере используется графический десктоп KDE, то можно попробовать запустить Konqueror. Вводим с командной строке «konqueror», немножко ждем и наблюдаем:
Вот и все…
Еще чуток о кракозябрах…
На форуме 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-сервера), он стартует в псевдографике. Оказалось, что и у меня тоже «с буковками вместо границ». Вот так:
В указанной теме форума присутствовал и вариант решения проблемы:
Это глюк 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 к программе…