Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
wiki:ssh [2012/05/10 20:59] |
wiki:ssh [2018/04/09 23:51] Добавлена информация про aliases |
||
---|---|---|---|
Строка 17: | Строка 17: | ||
sudo apt-get install ssh | sudo apt-get install ssh | ||
</code> | </code> | ||
- | Метапакет ''ssh'' содержит в себе и клиент и сервер, при этом скорее всего будет установлен только сервер, т. к. клиент установлен в Ubuntu по умолчанию. | + | В метапакете ''ssh'' содержится как клиент, так и сервер, но при этом, скорее всего, будет установлен только сервер, т. к. клиент уже есть в Ubuntu по умолчанию. |
===== Настройка сервера ===== | ===== Настройка сервера ===== | ||
- | SSH-сервер автоматически прописывается в автозагрузку при установке. Управлять его запуском/остановкой или перезапуском можно при помощи команд: | + | При установке SSH-сервер автоматически прописывается в автозагрузку. Управлять его запуском, остановкой или перезапуском можно с помощью команд: |
<code=bash> | <code=bash> | ||
sudo service ssh stop|start|restart | sudo service ssh stop|start|restart | ||
</code> | </code> | ||
- | Основным файлом конфигурации SSH-сервера является файл ''/etc/ssh/sshd_config'', который должен быть доступным для чтения/редактирования только [[суперпользователь_в_ubuntu|суперпользователю]]. | + | Основной файл конфигурации SSH-сервера — файл ''/etc/ssh/sshd_config'', доступный для чтения или редактирования только [[суперпользователь_в_ubuntu|суперпользователю]]. |
- | После каждого изменения этого файла необходимо перезапустить ssh-сервер для применения изменений. Вот пример конфигурации SSH-сервера по умолчанию в Ubuntu((Переведено с оригинального man sshd_config в Ubuntu 9.10. Добавлены дополнительные коментарии.)): | + | После каждого изменения этого файла необходимо перезапустить ssh-сервер для применения таких изменений. |
+ | |||
+ | Пример конфигурации SSH-сервера в Ubuntu по умолчанию((Переведено с оригинального man sshd_config в Ubuntu 9.10. Добавлены дополнительные коментарии.)): | ||
<file> | <file> | ||
# Пример конфигурации open-ssh сервера с русскими # | # Пример конфигурации open-ssh сервера с русскими # | ||
Строка 942: | Строка 944: | ||
</file> | </file> | ||
- | Вы можете скопировать приведенный выше текст в ваш ''sshd_config'' и использовать в дальнейшем для настройки. | + | Можно скопировать приведенный выше текст в ваш собственный ''sshd_config'' и использовать в дальнейшем для настройки. |
===== Рекомендуемые параметры. Безопасность ===== | ===== Рекомендуемые параметры. Безопасность ===== | ||
Строка 966: | Строка 968: | ||
==== Запрещение удаленного доступа для суперпользователя ==== | ==== Запрещение удаленного доступа для суперпользователя ==== | ||
- | По умолчанию root-доступ разрешен. Это означает, что клиент при подключении в качестве пользователя может указать root, и во многих случаях получить контроль над системой. При условии, что по умолчанию в Ubuntu пользователь, добавленный при установке системы имеет возможность решать все административные задачи через sudo, создавать возможность root доступа к системе как минимум странно. Рекомендуется отключить эту опцию совсем, или применять ее только в режиме ''forced-commands-only''. Отключить root-доступ можно так: | + | По умолчанию root-доступ запрещен по паролю (по ключу - можно) - опция PermitRootLogin установлена в without-password((В более старых версиях и на некоторых других дистрибутивах может стоять и вовсе 'yes'.)). Но, при условии, что по умолчанию в Ubuntu пользователь, добавленный при установке системы имеет возможность решать все административные задачи через sudo, создавать возможность root доступа к системе через ssh - выглядит неразумно (даже при аутентификации по ключу). Рекомендуется совсем отключить. эту опцию, или применять ее только в режиме ''forced-commands-only''. Отключить root-доступ можно так: |
<file> | <file> | ||
PermitRootLogin no | PermitRootLogin no | ||
Строка 1021: | Строка 1023: | ||
==== Еще про безопасность ==== | ==== Еще про безопасность ==== | ||
+ | [[http://rus-linux.net/nlib.php?name=/MyLDP/sec/openssh.html|20 советов по безопасному использованию сервера OpenSSH]] | ||
FIXME | FIXME | ||
Строка 1070: | Строка 1072: | ||
<code=bash>ssh-keygen -t rsa</code> | <code=bash>ssh-keygen -t rsa</code> | ||
Получаем предложение ввести пароль для защиты файла ключа (оказывается полезным при попадании файла в чужие руки). Если мы собираемся по SSH выполнять скрипты, то оставляем пустым. | Получаем предложение ввести пароль для защиты файла ключа (оказывается полезным при попадании файла в чужие руки). Если мы собираемся по SSH выполнять скрипты, то оставляем пустым. | ||
- | Передаём ключ на сервер командой | + | Передаём публичный ключ на сервер командой |
- | <code=bash>ssh-copy-id -i ~/.ssh/id_rsa user@server</code> | + | <code=bash>ssh-copy-id -i ~/.ssh/id_rsa.pub user@server</code> |
Всё, можно заходить. | Всё, можно заходить. | ||
Когда ssh работает на нестандартном порту: | Когда ssh работает на нестандартном порту: | ||
- | <code=bash>ssh-copy-id -i "$IDENTITY" "-p $SSH_PORT $SSH_USER@$SSH_HOST"</code> | + | <code=bash>ssh-copy-id -i ~/.ssh/id_rsa.pub "-p port user@server"</code> |
- | <note tip>если возникает ошибка: | + | <note tip>Если возникает ошибка: |
<code>Bad port 'umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys'</code> | <code>Bad port 'umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys'</code> | ||
попробуйте взять параметры в кавычки: | попробуйте взять параметры в кавычки: | ||
- | <code=bash>ssh-copy-id '-i "$IDENTITY" "-p $SSH_PORT $SSH_USER@$SSH_HOST"'</code> | + | <code=bash>ssh-copy-id '-i /home/user/.ssh/id_rsa.pub "-p port user@server"'</code> |
- | вот тут: http://mikegerwitz.com/2009/10/07/ssh-copy-id-and-sshd-port/ | + | |
- | приводится пример: | + | |
- | <code=bash>ssh-copy-id ‘-p XXXX -i ~/.ssh/id_rsa.pub username@host’</code> | + | |
</note> | </note> | ||
Удобно при подключени на удалённой системе пользоваться [[wiki:screen|утилитой screen]]. | Удобно при подключени на удалённой системе пользоваться [[wiki:screen|утилитой screen]]. | ||
+ | ==== Настройка удаленной ssh-директории в Nautilus ==== | ||
+ | Смотрите статью [[nautilus#Подключение к удаленным серверам|Nautilus]]. | ||
+ | ==== Монтирование удаленной папки с помощью sshfs ==== | ||
+ | монтируем удаленную папку в директорию след образом:<code bash>sshfs user@hostingserver.ru:/home/userdir ~/sshfsdir</code> | ||
+ | умоунт осуществляется следующей командой:<code bash>fusermount -u ~/sshsfdir</code> | ||
+ | ==== SSH aliases ==== | ||
+ | При использовании нескольких серверов с различными параметрами доступа (нестандартный порт, длинное имя хоста, логин отличный от локального, и т.п.) порой утомительно вводить все настройки подключения каждый раз заново. Для облегчения этого можно использовать aliases. | ||
- | ==== Настройка удаленной ssh-папки в Nautilus ==== | + | Для одного пользователя |
+ | ''~/.ssh/config'' | ||
- | FIXME | + | Глобально для всех пользователей |
+ | ''/etc/ssh/ssh_config'' | ||
- | ==== Монтирование удаленной папки с помощью sshfs ==== | + | Пример конфига. Подробнее в **man ssh_config** (не путать с **sshd_config**) |
- | FIXME | + | <code>Host AliasName # Произвольное имя хоста |
+ | HostName 1.2.3.4 # Можно указывать как IP, так и hostname (если работает DNS) | ||
+ | User YourUserName # Если пользователь не совпадает с локальным пользователем | ||
+ | Port YourSSHPort # Если нестандартный порт</code> | ||
+ | После этого можно подключаться к серверу командой ''ssh AliasName'' | ||
==== ssh-agent ==== | ==== ssh-agent ==== | ||
Строка 1107: | Строка 1119: | ||
<code>man ssh | <code>man ssh | ||
man sshd</code> | man sshd</code> | ||
+ | |||
+ | ======Использование смарт-карт====== | ||
+ | |||
+ | 1. Создание сертификата и экспорт открытого ключа, а также клиентская часть на Windows + Putty SC описано на сайте: | ||
+ | http://habrahabr.ru/post/88540/ | ||
+ | Описанное там дополнение Key Manager доступно только в старых версиях Firefox. Проверено на версии 3.5 для Windows. | ||
+ | Прямая ссылка на дополнение: https://addons.mozilla.org/ru/firefox/addon/key-manager/ | ||
+ | |||
+ | 2. Подготовка сервера. Вам необходимо убедиться что в конфигурации sshd разрешена аутентификация при помощи публичных ключей. Для этого необходимо в файле «sshd_config» указать значение параметра «PubkeyAuthentication» в «yes». | ||
+ | Затем в файл "~/.ssh/authorized_keys" добавляем наш публичный ключ полученный ранее (одной строкой). Обратите внимание, файл ".ssh/authorized_keys" находится в домашнем каталоге того пользователя, который потом будет логиниться по публичному ключу. | ||
+ | |||
+ | 3. Клиентская часть на Linux. Потребуется пересборка пакета OpenSSH без параметров. Рекомендуется только указать префиксы каталогов, например --prefix=/usr. Также следует учесть, что файлы конфигов будут в /usr/etc. | ||
+ | Перед началом необходимы пакеты: opensc-lite-devel, zlib-devel, openssl-devel. | ||
+ | Устанавливаем драйвер смарт-карты. | ||
+ | Для удобства в конфиге ssh_config (не путать с sshd_config) указать путь к библиотеке pkcs: | ||
+ | PKCS11Provider=<путь к библиотеке> | ||
+ | |||
+ | 4. На клиенте запускаем | ||
+ | ssh user@host | ||
+ | Если смарт-карта (токен) подключена, будет запрошен пароль и выполнен вход в сессию SSH. | ||
+ | |||
+ | ======Возможные проблемы при использовании====== | ||
+ | |||
+ | Привычная комбинация клавиш <key>Ctrl</key>+<key>s</key>, используемая во многих редакторах для сохранения исправлений, при работе в терминале с ssh-cервером приведёт к выполнению команды XOFF что внешне напоминает зависание сессии. Однако это не так. Сервер продолжает принимать вводимые символы и команды, но не выводит это на экран. Что бы выйти из такого затруднительного положения достаточно применить комбинацию <key>Ctrl</key>+<key>q</key>, тем самым включив режим XON обратно. | ||
===== Ссылки ===== | ===== Ссылки ===== | ||
+ | * [[http://help.ubuntu.ru/wiki/fail2ban|Fail2ban]] | ||
* [[http://www.nestor.minsk.by/sr/2007/11/sr71104.html|Хитрости SSH]] | * [[http://www.nestor.minsk.by/sr/2007/11/sr71104.html|Хитрости SSH]] | ||