Показаны сообщения с ярлыком SSH. Показать все сообщения
Показаны сообщения с ярлыком SSH. Показать все сообщения

среда, 29 октября 2008 г.

SSHFS -монтирование удаленных систем через SSH.

Отсюда. Как я уже говорил, ничего дополнительно на сервере делать не нужно. Все что надо, это установленный и настроеный OpenSSH. Поэтому переходим к настройкам на стороне клиента. FUSE был включен в ядро начиная лишь с версии 2.6.14. Если у вас версия ядра 2.6.14 или выше (чтобы узнать, запустите uname -r), можете вздохнуть с облегчением. Если нет, придется скопилировать модуль fuse и подключить его к ядру:
$sudo modprobe fuse
Теперь можно переходить к установке FUSE и sshfs. Если ваша система не предоставляет бинарных пакетов, вам придется скачать исходники и скомпилировать самому. Скачать можно здесь - FUSE и sshfs-fuse.

В Ubuntu или Kubuntu и Debian testing этого делать не нужно. Все сделали за вас. Нужно лишь установить пакеты:
$sudo apt-get install sshfs
(fuse поставится вместе с зависимостями)

Теперь, поскольку sshfs предназначен для использования от имени обычного пользователя (не рута), добавьте себя (возможно и других пользователей) в группу fuse:
$sudo usermod -a -G fuse имя_пользователя
или
adduser имя_пользователя fuse
После этого нужно перелогиниться чтобы попасть в группу fuse.

Использование.

Создайте точку монтирования, скажем, папку local в домашней директории
$cd ~
$mkdir local
Монтируем:
$ sshfs alien@10.52.31.1:/home/data /home/serhiy/local
(заметьте, монтирование происходит от имени обычного юзера (нет sudo перед командой монтирования))

воскресенье, 30 марта 2008 г.

Монтируем удаленную файловую систему через SSH

Взято с habrahabr

Во время работы часто приходится работать с удаленными файлами, часто через ssh. Gnome позволяет подключиться и работать с данными с помощью утилиты Places->Connect to Server, но, к сожалению, таким образом могут работать не все программы... Vim, например, а так как это основной мой редактор — я искал способ сделать это. И нашел :)


Все, что написано дальше — касается Linux, в частности Ubuntu Linux.
Итак, способ : смонтировать удаленую систему так же, как вы монтируете локальные диски. Сделать такое возможно с поомщью утилиты sshfs.
Для начала надо ее установить вместе с несколькими зависимостями:

$sudo apt-get install sshfs

Потом нужно добавить себя в группу пользователей fuse. Сделать это надо, потому что программа устанавливвается в системные папки, в которые обычным пользователям доступ запрещен. Так, добавляем себя в группу:

$sudo adduser <Пользователь> fuse

Потом создаем директорию для монтирования, например, на рабочем столе:

$mkdir ~/Desktop/test_ssh

Теперь надо выйти с терминала и зайти вновь. Все, теперь мы в группе fuse. Пробуем соединиться с сервером:

$sshfs user@example.com:/stuff ~/Desktop/test_ssh

Если соединение идет не по ключу то, скорее всего, у вас появится запрос на введение пароля с удаленной машины.
Если же вы сразу не получили ошибку fusermount: fuse device not found, try ‘modprobe fuse’ first — проверяйте директорию, там должны появиться файлики :). Если же вылезла ошибка — значит модуль ядра fuse не загрузился автоматом, пробуем загрузить вручную:

$sudo modprobe fuse

Пробуем установить соединение еще раз.
Чтобы отмонтировать это все дело, надо выполнить следующее:

$fusermount -u ~/Desktop/test_ssh

Чтобы каждый раз не вводить такую кучу комманд - создаем(если нету) и редактируем файл ~/.bash_aliases, добавляя в конец такие строчки:


alias testssh='sshfs user@example.com:/stuff ~/Desktop/test_ssh'
alias testssh_umount='fusermount -u ~/Desktop/test_ssh'


Теперь вы сможете монтировать удаленную машину командой testssh, а размонтировать — testssh_umount :)

SSH: Автоматизированный вход с помощью authorized_keys

Входить на удалённый сервер каждый раз вводя пароль довольно утомительно1). Но SSH умеет авторизироваться с помощью rsa или dsa ключей. Рассмотрим только rsa.

Прежде всего надо создать пару ключей.

$ ssh-keygen -t rsa

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
e7:7d:b6:9c:e9:21:c6:3e:ad:3f:d2:6a:6d:f2:e5:63 user@host

Путь для создаваемого ключа оставляем неизменным нажимая в ответ на запрос ENTER.

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

После того, как ключи созданы, нам надо передать публичный ключ (в нашем случае id_rsa.pub) на удалённый сервер.

Сделать это можно с помощью команды:

ssh-copy-id -i ~/.ssh/id_rsa.pub remote-user@remote-host

Здесь следует быть внимательным и не отправить по ошибке на сервер приватный ключ (id_rsa) вместо публичного (id_rsa.pub).

Программа отрапортует о завершении

Now try logging into the machine, with "ssh 'remote-user@remote-host'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

предложив зайти на на удалённый хост. Если всё прошло успешно, то пароль у Вас спрошен не будет. Иначе следует проверить .ssh/authorized_keys.

Так же авторизоваться с ключём не удастся, если Вы отправили не тот ключ. Удалите на удалённой машине ~/.ssh/authorized_keys и повторите засыл с помощью ssh-copy-id.

взято отсюда

Переброс локальных портов удаленного сервера на локальную машину

Отсюда взято

Допустим у нас есть доступ по ssh на сервер где крутятся вкусные локальные сервисы (обычно это например sendmail, mysql, swat, настройки cups.. и все что принято вешать на 127.0.0.1). Задача - получить доступ к этим сервисам на локальной машине.
Для этого воспользуемся возможностью ssh перенаправлять локальные порты.

Рассмотрим на примере перенаправления порта mysql.
1) открываем одну консоль и логинимся там по ssh у нашему серверу следующим образом:
$ ssh -L 33306:127.0.0.1:3306 user@remote.org.ua

После этого на локальной машине будет открыт порт 33306, и все что попадет в этот порт будет перенаправлено
на сервер remote.org.ua, и оттуда подключится к 127.0.0.1:3306 (тоесть к mysql)

2) Тестируем что все у нас получилось.
Подключимся к удаленной базе данных с помощью локального клиента в другой консоли
$ mysql --protocol=TCP --port=33306 -p -u mysql_user

Вот и все Ж:-)

Пока вы будете подключены по ssh к серверу, будете иметь возможность по локальному порту получать доступ к сервису удаленного сервера, который работает локально.

Приостановить сессию ssh

Если вы подключились по ssh к удаленному серверу и вам необходимо попасть в шелл того компьютера, с которого запущен ssh, нажмите "~", затем ^Z. Это отправит ssh в фон, как обычную задачу:
debserver:~# ~^Z [suspend ssh]
[1]+ Stopped ssh root@ns.local1.net
zombie:~$

вернуть обратно нужно набрать fg [nr]
где [nr] номер работы(в данном случае 1)
если у вас один jobs то можно просто fg

По материалам http://souptonuts.sourceforge.net/how_to_linux_and_open_source.htm

Настройка безпарольной аутентификации по ssh

Отсюда

Допустим, вам необходимо настроить безпарольный вход по ssh (scp и sftp тоже) на удаленный сервер remote.org.ua под пользователем user.
Если ваш имя вашего локального пользователя совпадает с удаленным, то user@ везде можно опустить.

1) создаем открытый и закрытый ключ нашей локальной системы
$ ssh-keygen -t rsa
жмем энтер отказываясь от ключевой фразы

2) если в системе есть программа ssh-copy-id, то настраиваем удаленную систему на то, что бы оно авторизировало ssh по открытому ключу
$ ssh-copy-id -i ~/.ssh/id_rsa user@remote.org.ua
переходим к шагу 4)

3) если ssh-copy-id нет то можно сделать это ручками. вот последовательность действий с объяснениями

3.1) копируем открытый ключ на удаленную систему
$ scp ~/.ssh/id_rsa.pub user@remote.org.ua:~ незабываем ввести пароль. ведь мы еще не настроили беспарольный вход Ж:-)

3.2) логинимся на удаленный сервер
$ ssh user@remoute.org.ua

3.3) заносим открытый ключ нашей локальный системы в авторизированые ключи удаленной системы, устанавливаем правильные права и убираем за собой мусор:
remote$ [ -d ~/.ssh ] || (mkdir ~/.ssh; chmod 711 ~/.ssh) # создадим ~/.ssh директорию если ее нет и дадим нужные права
remote$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys # добавляем открытый ключ к авторизированым ключам
remote$ chmod 600 ~/.ssh/authorized_keys # и делаем правильные права(иначе ssh откажется брать отсюда ключи)
remote$ rm ~/id_rsa.pub # удаляем ненужное

4) проверяем что все работает. запускаем на локальном хосту
$ ssh user@remoute.org.ua
или например
$ scp .zshrc user@remoute.org.ua:~
должно сработать без пароля Ж:-)

ps
тут рассказан один из вариантов такой же настойки между FreeBSD и Windows XP используя putty
http://it-expert.com.ua/weblog/message/251/

Удаленное подключение к рабочему столу Linux из Windows с помощью Xming и SSH

Взято отсюда

Иногда приходится пользоваться тем, что дали. Мой компьютер, на котором стоит Debian Linux, был занят моей женой. Зато был свободен компьютер с Windows. И вот появилось желание подключиться к своему компьютеры с рабочей станции под управлением враждебной OS. Первым, что пришло в голову - это удаленный рабочий стол. Однако, нашлось более элегантное решение. И, несмотря на заголовок статьи, речь пойдет о немного другой технологии. Взгляните на этот снимок:





Вы видите приложения Linux прямо на рабочем столе Windows! Как же они туда попали?

Немного о теории. В отличие от Windows, в Linux графическая оболочка не является частью ядра системы. Стандартная оконная система для Linux - это X Window System, или, попросту говоря, иксы. Она берет на себя отрисовку графических элементов и взаимодействие с устройствами ввода-вывода. А самое вкусное заключается в том, что эта система имеет прозрачную клиент-серверную архитектуру. Оконная система выполняет роль сервера, а графические приложения - роль клиентов. Как и положено клиентам, они подключаются к серверу и взаимодействуют с ним для отрисовки и для получения событий мыши и клавиатуры.

Но это еще не все! Дело в том, что оконная система может находиться на другом компьютере, а графическое приложение связываться с ней через сеть. Так вы можете запустить приложение на удаленном компьютере, заставив его рисоваться на том компьютере, за которым сейчас работаете. Или наоборот. Или запустить программу на одном удаленном компьютере с отрисовкой интерфейса на другом удаленном компьютере. Заманчивая возможность, неправда ли? :-)

Думаю, достаточно теории, давайте приступим к практике.

Для начала подготовим удаленный компьютер Debian Linux. Все, что нам здесь нужно - это SSH-сервер. Через него мы будем подключаться удаленно и запускать нужные нам программы. Выполняем всего одну команду в консоли:

$ sudo apt-get install openssh-server

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

1. SSH-клиент. Я установил PuTTY.
2. X Server для Windows. Я выбрал Xming.

Обе программы можно загрузить с сайта SourceForge (пакеты Xming и Xming-portable-PuTTY). Также по желанию можно загрузить стандартный набор шрифтов (пакет Xming-fonts). Все, что загрузили - устанавливаем (с полной установкой всех компонент Xming), и переходим к настройке. Теперь главное не запутаться, что к чему будем подключать :-)

Для начала установим соединение по SSH с удаленным компьютером. Для этого запускаем PuTTY. Вводим IP-адрес компьютера Linux.


Теперь переходим в раздел Connection / SSH / X11 и включаем перенаправление графического интерфейса. В качестве расположения X-сервера водим IP-адрес компьютера Windows, за которым сейчас сидим.


Кроме того, чтобы вместо русских букв не всплыли крокозябли, желательно в разделе Window / Translation установит правильную кодировку (у меня - UTF8 - стандартная кодировка на Debian и Ubuntu). Возвращаемся в раздел Session, сохраняем настройки и подключаемся к компьютеру Linux. В случае успешного подключения мы вводим логин и пароль и видим текстовую консоль. С ее помощью мы можем удаленно запустить консольные программы, но графические программы не могут рисоваться в консоли. Поэтому оставим на время наше подключение по SSH.

Теперь настроим Xming. Для этого запускаем программу XLaunch - это мастер настроек. На первом шаге указываем способ интеграции в графическое окружение Windows. Мне более всего по душе первый, когда каждое приложение Linux находится в своем окне.


На втором шаге нам предлагается автоматически запускать какое-нибудь приложение вместе с иксами. Я предпочел сделать это позже по мере необходимости посредством уже запущенного нами PuTTY.


На третьем шаге указываем параметры запуска Xming. Опция Clipboard позволяет интегрировать буфер обмена. Также для полноценной работы я ввел следующие параметры:
"-dpi 96" - чтобы поправить размер шрифтов. Значение можно подбирать по вкусу.
"-xkblayout us,ru" - для работы с двумя раскладками клавиатуры.
"-xkbvariant basic,winkeys" - уточнение раскладок.
"-xkboptions grp:caps_toggle" - переключение раскладки клавишей CAPS LOCK.


И, наконец, на следующем шаге сохраняем настройки кнопкой "Save configuration" и запускаем X-сервер кнопкой "Готово".


В системном лотке появится иконка Xming


В дальнейшем запустить сервер с теми же настройками можно просто путем открытия сохраненного файла. Изменить настройки можно через контекстное меню файла.


Итак, X-сервер запущен. Возвращаемся в нашу консоль, предоставленную соединением SSH. Здесь мы можем удаленно запустить консольное приложение, и в этой же консоли увидим вывод этого приложения. А что теперь будет, если мы попытаемся запустить в этой консоли графическое приложение? Обычно, если вы подключились по SSH и пытаетесь запустить оконное приложение, вы получите ошибку, потому что вы подключились к удаленному компьютеру в консольном режиме, и рисовать окна просто нечем. Однако, в этот раз мы включили перенаправление графики на наш компьютер Windows, на котором уже запущен свой X-сервер. Поэтому, если вы попытаетесь запустить оконное приложение в удаленном консольном терминале, его окно нарисуется на компьютере Windows. Попробуйте, например, набрать следующую команду:

$ kwrite &
или
$ gedit &

Амперсанд в конце команды указывает, что программу нужно запустить в фоновом режиме, чтобы во время ее работы консоль была доступна для других действий.

Ну, надеюсь, у вас все получилось, и на вашем рабочем столе Windows красуются оконные приложения Linux.

Кстати говоря, благодаря этой клиент-серверной архитектуре злоумышленник может отправить на ваш экран окно с просьбой ввести ваш пароль или еще с какой-нибудь гадостью. Чтобы такого не происходило, не подключайтесь к общественным сетям без фаирвола. И помните: большие возможности - это большая ответственность.

Настройки SSH авторизации по ключу с помощю PuTTY

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

  1. С помощью PuttyGen генерируем приватный и публичный ssh-ключи - кнопка "Generate". В настройках можно указать тип ключа и его размер.
  2. После этого сохраняем приватный ключ в файл с помощью кнопки "Save private key", например private.key. Публичный ключ отображается в верхнем поле "Key" и имеет вид:
    "ssh-rsa AAAAB3NzaC1yc*что-то*uJQ== rsa-key-20020104".
  3. Копируем содержимое поля "Public key for pasting into OpenSSH authorized_keys file" в оперативную память и закрываем PuttyGen.
  4. Запускаем ssh-клиент Putty и производим коннект к серверу.
  5. Попав на сервер, создаем папку ~/.ssh
  6. Создаем файл ~/.ssh/authorized_keys с содержимым поля "Public key for pasting into OpenSSH authorized_keys file" утилиты PuttyGen (то что копировалось в оперативную память).
    ВАЖНО! ключ в файле должен быть записан в одной строке без переносов.
  7. Меняем права доступа к файлу командой chmod 600 ~/.ssh/authorized_keys
  8. Закрываем Putty
  9. Запускаем Putty. В настройках вашего соединения указываем путь к приватному ключу: Connection->SSH->Auth->Private_key_for_Authentification->private.key
  10. Сохраняем настройки соединения и производим коннект к серверу. SSH-сервер запросит имя пользователя под которым вы хотите прологиниться - укажите свой логин. Далее авторизация пройдет с использованием приватного и публичного ssh-ключей.