В сети много документов по настройке SSH для удалённого управления Linux и BSD-системах, но часто в них умалчиваются простые вещи. В этом посте я расскажу о простом использовании клиента SSH и настройке удалённого доступа.
Итак, всё, что нам нужно для установки полного комплекта удалённого управления компьютером (SSH-клиент и SSH-сервер) давным-давно лежит в репозитории. Лёгким движением ставим пакет:
# apt-get install sshи ждём несколько мгновений, когда оно настроится. После этого мы получим возможность SSH доступа в систему и управления ей. Так как технология эта кросс-платформенная, то можно управлять по SSH Linux или FreeBSD можно и из Windows. Для этого есть putty, SSH Windows клиент.
На стороне клиента
Теперь надо поправить настройки, которые лежат в каталоге /etc/ssh - конфиг для клиента называется ssh-config, конфиг для сервера, соответственно, sshd-config. На своей, клиентской, стороне, настраиваем возможность приёма X11Forward, ищем и меняем ключи на:
ForwardX11 yesКлиентская машина теперь может запускать удалённо графические приложения на сервере. Настройка SSH на стороне клиента закончена, теперь идём к админу далёкого сервера...
ForwardX11Trusted yes
В принципе, можно на клиентской стороне ничего не менять, а логиниться на удалённую машину так:
$ ssh -X user@server1.mydomain.comили
$ ssh -X user@192.168.x.xесли лезть в конфиги на своей стороне не хочется, но у меня это почему-то не работало...
На стороне сервера
Теперь нужно настроить SSH сервер: в конфигах машины-сервера, к которой будем подсоединяться (у вас ведь есть её рутовый пароль, так ведь?) в /etc/ssh/sshd-config ищем и меняем ключи на:
X11Forwarding yesЭтим мы разрешаем серверу запускать удалённо графические приложения и отправлять их на клиентскую машину. Перестартуем сервис:
X11DisplayOffset 10
X11UseLocalhost yes
sudo /etc/init.d/ssh restartТеперь мы сможем заходить на машину не только в консольном режиме, но и с запуском иксовых приложений.
Если хочется разрешить вход только с определённых машин, нужно подправить строки в конфиге
/etc/ssh/sshd_config
AllowUsers hacker@*
AllowUsers *@192.168.1.*
Впрочем, это уже для более продвинутых товарищей.SSH в действии
Всё готово, и теперь я приведу несколько команд SSH для примера. Открываем консольку и пишем в ней:
$ ssh имя_пользователя_удалённой_машины@ip_адрес_или_сетевое_имя_удалённой_машиныНапример, в моём случае, когда я захожу удалённо на ноутбук, пишу ssh beast@192.168.1.5 - так как у меня не настроен сервер имён, пишу адреса. Опять-таки, доступ по SSH может быть не только из Linux или FreeBSD, но и из Windows - при помощи putty.
После этого нас могут спросить: данный айпишник ещё не опознан, как доверительный, стоит ему доверять? Пишем yes, стоит, конечно! :-) Далее вводим пароль пользователя удалённой машины, под которым мы заходим и, если он правильный, попадаем в консольудалённой машины. В процессе набора пароля вы его не увидите - набирайте всё равно; даётся три попытки - потом соединение обрывается.
Итак, нас поприветствуют как-то вроде этого:
penta4@penta4rce:~$ ssh beast@192.168.1.5Теперь, в окошке терминала, который на нашей машине, мы рулим компьютером, к которому мы подключились. Не перепутайте терминалы, а то вырубите не тот компьютер :-) Здесь всё просто и логично, но нам бы хотелось ещё и запускать графические приложения на удалённой системе. Легко!
Password:
Linux notebeast 2.6.15.7 #3 PREEMPT Sun Jul 2 12:51:07 MSD 2006 i686 GNU/Linux
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Oct 10 19:23:57 2006 from 192.168.1.1
beast@notebeast:~$
Запуск графических приложений удалённо
Вводим, как обычно, логин и пароль удалённой машины. И вот перед нами та же самая консоль. Как вызвать графическое приложение? Просто наберите имя вызываемой программы и поставьте после имени знак амперсанд:
$ gimp &;
Это запустит на удалённой машине GiMP в фоне и вернёт вам консоль для дальнейших действий. Если вы не поставите амперсанд после имени приложения, то управление в консоль будет возвращено только после завершения приложения.
На приведённом скриншоте: слева gimp, запущенный на "родной" машине, справа - на удалённой. Кнопочки чуть разные из-за того, что на удалённой машине другие настройки gimp. В остальном - как родной.
На приведённом скриншоте: слева gimp, запущенный на "родной" машине, справа - на удалённой. Кнопочки чуть разные из-за того, что на удалённой машине другие настройки gimp. В остальном - как родной.
Итак, у вас запустится графическое приложение точно так же, как если бы оно работало у вас. Есть одно но: это приложение будет работать на вашем экране, но с документами и настройкамиудалённой машины. Если файл для обработки находится в вашем домашнем каталоге, то его нужно будет передать на удалённую машину. Оно (и другие приложения, которые вы запустите) будет работать ровно до того момента, пока открыто ssh-соедиение. Туда же, в консольку ssh-соединения, будут выдаваться служебные сообщения запускаемых вами приложений.
Заключение
Ну вот, как выясняется, удалённое соединение и работа по SSH может быть полезна и простым смертным, а не только бородатым админам. Очень удобно, например, быстренько влезть на компьютер коллеги и помочь ему в чём-то (прочитать логи, например), тихо и незаметно поставить софт, или просто загрузить чем-то полезным простаивающую машину. В общем, много применений.
Так как пост делался с упором на простого пользователя, тут не рассматривается шифрованное копирование файлов и прочие тонкости. Они есть на русском в виде краткого описания настройки SSH, а ещё очень подробная статья с nixp. Хорошая справка (правда, на английском) здесь и тут. Думаю, что этого хватит.
Заключение
Ну вот, как выясняется, удалённое соединение и работа по SSH может быть полезна и простым смертным, а не только бородатым админам. Очень удобно, например, быстренько влезть на компьютер коллеги и помочь ему в чём-то (прочитать логи, например), тихо и незаметно поставить софт, или просто загрузить чем-то полезным простаивающую машину. В общем, много применений.
Так как пост делался с упором на простого пользователя, тут не рассматривается шифрованное копирование файлов и прочие тонкости. Они есть на русском в виде краткого описания настройки SSH, а ещё очень подробная статья с nixp. Хорошая справка (правда, на английском) здесь и тут. Думаю, что этого хватит.
57 комментариев: |высказаться!| RSS-лента дискуссии.|
В целях большей защиты, желательно поменять стандарный порт. Потом через аругмент -p его задавать. Если пользуетесь лишь одним сервером, то можно сделать alias, чтобы все время не набирать все эти ip имена и порты. Ну или пользоваться history | grep ssh ,а потом просто !№процесса.
Прикольно все расписано. Очень доходчиво.
Спасибо :-) Просто я долго не мог понять, как запускать графические программы через ssh. Я думал, что это типа RemoteDesktop, а оно вон как :-)
В манах и других статьях про это не говорится вообще или мельком - ну все ж вроде знают...
В целях большей защиты, желательно поменять стандарный порт.
Да-да, это верно. Но простым смертным это уже слишком - или тогда это бородатые админы. :-)
Кстати, в вашем блоге почему-то пропала возможность оставлять комментарии гражданам с Blogger. Только с гугловского аккаунта. Это фича такая?
Вы уже второй, кто об этом пишет. Я не знаю. Это не фича. По крайней мере не моя. Щас пойду в Blogger Help искать. А как на счет других блогов на Blogger Beta? Или это только у меня такое?
Мне сервер без надобности, так что я поставил себе openssh-client из backports.org - и телемаркет.
И для того, что бы не набирать все время ip очень и нестандартные порты, имена пользователей и т.д., редактируем ~/.ssh/config.
Так же, редактировать /etc/ssh/ssh_config для клиента нет необходимости, вообще-то. Опять же, редактируем ~/ssh/config.
За подробностями - man ssh_config.
Хочу только сказать, что у меня все настроено так для конкретной машины - порт, имя пользователя, файл Identity, и ip этой машины.
Еще есть такая интересная фича - ее стоило бы в статье рассмотреть - возможность логина без ввода пароля, с помощью ключей.
Такие вопросы задаются по личной почте, которая есть в профиле, а не в комментах на блог.
есть проблема вот в чем: когда пытаюсь запустить там иксы
Дальше можно не писать: я же написал в посте,что иксы там запускать НЕ НАДО, а НАДО запускать приложение иксовое. И всё будет ОК.
В Etch будет два пакета ssh - openssh-client, и openssh-server. Первый соответственно клиент, второй - сервер.
Этч ещё не скоро :-) Когда выйдет - пост поправлю. Спасибо
Еще есть такая интересная фича - ее стоило бы в статье рассмотреть - возможность логина без ввода пароля, с помощью ключей.
Не в этм посте, а то для простых смертных это перебор :-) Но предложение учёл, буду писать (когда сам попробую :-))
[...]
-Y Enables trusted X11 forwarding. Trusted X11 forwardings are not
subjected to the X11 SECURITY extension controls.
[...]
на машине, откуда пойдём:
$ ssh-keygen -t dsa
- соглашаемся с местом хранения и вводим пустой пароль, просто жмём Enter.
Далее публикуем наш публичный ключ на машину, куда будем идти. Тут же, на нашей исходной машине:
cat ~/.ssh/id_dsa.pub | ssh user@remote.host.com "cat - >> .ssh/authorized_keys"
Последний раз ;) вводим пароль на удалённую машину.
Всё, публичный ключ нашего аккаунта на локальной машине добавлен в список авторизованных ключей аккаунта user на удалённом хосте.
Можно проверить: ssh user@remote.host.com не должен спрашивать пароля.
PS: два cat в одной команде наверняка можно заменить чем-то более правильным, чтобы не было Ещё Одного Бесполезного Использования Cat (тм).
Я писал тебе писмо, насчет рассылки дисков. Рассылка закончена или просто письмо не прочитал?
krivakin@km.ru
Если грамотно организована безопасность вообще - так, что никто не может украсть личный ключ из id_dsa - то ключи, очевидно, безопаснее паролей.
Одним из признаков хорошего сисадмина является использование везде ssh и ключей, с доступом к ssh только с определённых хостов и с запрещённой парольной аутентификацией.
Нестандартный порт - не помеха хакерам, а лишь неудобство пользования.
Сейчас у меня мало времени, к концу года "подбиваю бабки", но пост будет.
Ещё раз огромное спасибо за ценные комментарии. Если чт ещё вспомните - милости просим.
Но вот такой вопрос возник. Если я хочу удалённо не просто приложения позапускать, а прямо в среде Gnome поработать -- как это сделать кошерно? Пока тупо запускал "nautilus&" и "gnome-panel&" -- и вроде всё работало, но не уверен, что это исчерпывающе и кошерно. Какие мануалы изучать?
внц запускать не unixway
/usr/bin/gdmXnest