Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
wiki:ssh [2013/01/12 17:27] [Настройка удаленной ssh-директории в Nautilus] |
wiki:ssh [2016/08/31 14:38] [Запрещение удаленного доступа для суперпользователя] |
||
---|---|---|---|
Строка 968: | Строка 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 | ||
Строка 1023: | Строка 1023: | ||
==== Еще про безопасность ==== | ==== Еще про безопасность ==== | ||
+ | [[http://rus-linux.net/nlib.php?name=/MyLDP/sec/openssh.html|20 советов по безопасному использованию сервера OpenSSH]] | ||
FIXME | FIXME | ||
Строка 1072: | Строка 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> | + | |
- | Если возникает ошибка | + | |
- | <code>Warning: Identity file ~/.ssh/id_rsa not accessible: No such file or directory.</code> | + | |
- | то необходимо прописать полный путь до файла ключа. | + | |
</note> | </note> | ||
Удобно при подключени на удалённой системе пользоваться [[wiki:screen|утилитой screen]]. | Удобно при подключени на удалённой системе пользоваться [[wiki:screen|утилитой screen]]. | ||
Строка 1110: | Строка 1102: | ||
<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://help.ubuntu.ru/wiki/fail2ban|Fail2ban]] |