SSH для удобного защищенного доступа к Raspberry Pi
Оценка пользователей: / 11
ПлохоОтлично 

SSH доступ к Raspberry Pi

Интернет - враждебная окружающая среда и безопасность является обязанностью каждого, поэтому, если Вы подключаетесь через открытый Интернет, рекомендуем воспользоваться SSH (Secure Shell).
Установить соединение SSH можно с PuTTY - программой, которая позволяет работать на удаленном Raspberry и других компьютерах с ОС Linux с компьютера Windows PC, что особенно важно, учитывая количество пользователей последней ОС.
Подготовка и установка
Все, что Вам нужно, это подключить к Raspberry Pi питание и Интернет.
Сначала нам необходимо узнать IP-адрес Raspberry Pi, потому что он обычно предоставляется динамически через DHCP. Конечно, он Вам уже известен, если Вы установили статический IP-адрес
Однако при динамической адресации маршрутизатор следующий раз может назначить другой IP-адрес. Это проблема и для того, чтобы подключиться через SSH, мы должны знать IP-адрес Raspberry Pi в Вашей локальной сети. Мы не сможем увидеть его, если не будем иметь мониторинг подключенных устройств. Необходимо сканирования сети, чтобы найти IP-адрес Raspberry Pi. 
Конечно, мы можем узнать IP-адрес Raspberry Pi, войдя в маршрутизатор и увидев, какие устройства подключены. Но есть простой способ: с помощью замечательного бесплатного инструмента под названием Advanced IP Scanner. Скачать его можно c radmin.com.
После запуска IP Scanner Вы увидите экран, похожий на приведенный ниже. Нажмите кнопку Сканировать (Scan):
SSH Pi 1
Среди отображенных подключенных к сети устройств Вы без проблем найдете свой Raspberry Pi и его IP-адрес.
На следующем шаге убедитесь, что сервер SSH на Raspberry Pi работает. Для этого введите в терминале сессии команду: 
sudo service ssh status
Если сервер SSH запущен, то Вы должны получить ответ, что услуга sshd работает. Если это не так, то введите в терминальном сеансе: 
sudo raspi-config
Запустится утилита конфигурирования Raspbian, которая входит в дистрибутив. Сначала выберите меню для SSH, а потом - разрешение на включение сервера SSH. Перезагрузите Raspberry Pi. 
Для использования основных возможностей PuTTY доступны для загрузки с сайта PuTTY пять файлов:
PuTTY.exe - клиент Secure Shell
PuTTYgen.exe - генератор публичного/личного ключей SSH
Pagent.exe - агент аутентификации, хранит ключи в памяти и при его использовании не надо каждый раз вводить ключевую парольную фразу
PSCP.exe – для защищенного копирования через командную строку
PSFTP.exe – для защищенного копирования с FTP-подобным интерфейсом
В данной статье мы воспользуемся первыми тремя, а использование последних двух файлов рассмотрим в следующей статье. 
Во избежание проблем при установке, убедитесь, что каталог установки находится в пути для команды. 
В Windows 7 щелкните правой кнопкой мыши на Компьютер в меню Старт и выберите пункт Свойства. Внизу окна нажмите Параметры среды. Откроется диалоговое окно
SSH Pi 2
Всегда существует переменная Path в разделе Системные переменные, а иногда также и в разделе Переменные среды пользователя. Только администраторы имеют доступ к системных переменных, чтобы изменить или добавить Path, при необходимости. 
Мы поставим новую папку типично в начале пути и она будет отделена от остальной части списка запятой. Нажмите OK, чтобы сохранить все изменения. 
Установка PuTTY не имеет особенностей. В конце установки создайте ярлык на рабочем столе, потому что обычно эта программа часто используется. В нашем случае, путь в ярлыке к исполняемому файлу C:Binputty.exe.
Запуск PuTTY и настройка для целевой системы
• Сессия:
Имя узла (Host Name) : имя узла, например, dbserver, или IP-адрес удаленного компъютера
Протокол (Protocol): SSH
• Соединение: Данные(Data)
Пользователь с автологином: например, steve
• Соединение: SSH
Отдать преимущество SSH протоколу версии: только 2
• Окно: Перевод (Translation)
По умолчанию встановлено ISO-8859-1, поэтому необходимо отрыть список и выбрать UTF-8.
SSH pi 3
Вводим соответствующие данные, сохраняем сессию (Save) и нажимаем Open, чтобы открылось окно авторизации, и для входа используем имя и пароль (по умолчанию для Raspberry: pi и raspberry) 
SSH-Pi 4
При доступе к нескольким удаленным системам можно создать и использовать несколько сеансов, соответствующим образом изменив ярлыки запуска сохраненных сеансов. Для этого щелкните правой кнопкой мыши на ярлыке и выберите Свойства, введите параметр -load вместе с именем сессии (в кавычках, если необходимо): 
SSH Pi 5
Для работы в терминальном режиме будут полезны следующие команды: 
man (manual) команда – видает детальную помощь по команде;
ls (list) - список файлов;
ls -lha - показывает все файлы (включая скрытые), размер файлов, права на них, дату последнего изменения;
ls -lha | less - позволяет просматривать файлы постранично (если их много);
mv (move) - переименовать, переместить;
cp (copy) - копировать;
rm (remove) - удалить;
> - очистка файла. Эту команду можна применить к лог-файлам. Если очистить файлы в директории /site/Ваш_домен/log/ следующим образом:
> access.log
> error.log
> combined.log
то очистятся логи, а вот их удаление, как и удаление других служебных файлов, може привести к остановке работы Вашего сайта.
du -h --max-depth=1.
Так можно посмотреть, сколько места используется под сайт. Крапка означает текущую директорию, вместо нее можно подставить имя любой интересующей Вас директории.
mc - клон Нортон Командера, в котором удобно работать с файлами, а также можно работать с ними по FTP (FTP внутри SSH )! О данной команде подробнее в следующей статье.
Создание, установка и использование публичных/личных ключей
Для шифрования предлагаются на выбор два стандарта шифрования: DSA и RSA.
DSA или Digital Signature Algorithm - стандарт американского правительства, разработанный NSA для цифровых подписей. Он является производным от алгоритма Эль-Гамаля. Безопасность строится на основе сложности решения определенных типов логарифмических функций.
RSA назван от инициалов авторов: Ron Rivest, Adi Shamir и Leonard Adleman, которые первыми опубликовали алгоритм. Он основан на сложности факторизации больших чисел.
Хотя DSA и RSA имеют криптографию практически одинаковой мощности, но у каждого есть свои преимущества, когда речь заходит о производительности. DSA быстрее работает для расшифровки и подписи, а RSA - быстрее при шифровании и проверке.
Поэтому на Ваш выбор, но рекомендуется ключ от 2048 до 4096 бит. Более короткие ключи могут быть недостаточно устойчивыми, а более длинные очень долго генерируются.
SSH Pi 6
Не создавайте ключи какого-либо типа SSH версии 1: они не будут безопасными!
Защита и сохранение ключей
SSH Pi 7
Не забывайте парольную фразу: пара ключей без нее напрасна!
Установка публичного ключа на RaspberryPi
SSH Pi 8
Вибираем директорию и создаем  файл с именем .ssh/authorized_keys (ключ начинается с SSH-RSA или DSA-SSH).
Для этого можно воспользоваться одним с 7 самых популярных способов:
  1. touch имя_файла – создать пустой файл
  2. cat > имя_файла - и ввод закончить ctrl+z
  3. vim имя_файла - создать или редактировать имя_файла
  4. nano имя_файла – использование встроенного редактора
  5. echo "текст" > имя_файла
  6. > имя_файла пожалуй, самый короткий способ
  7. cp имя_файла _0 имя_файла – скопировать или создать файл
SSH Pi 9
Также позаботимся о защите сохраненного файла. Убедитесь, что директория SSH и файлы в ней может прочитать только их владелец - это мера безопасности, которая может быть достигнута с помощью параметров команды CHMOD с применением ко всей директории:
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ ls-lR~/.ssh
Права доступа записываются в chmod одной строчкой одновременно для трех типов пользователей:
  • владельца файла;
  • других пользователей, которые входят в группу владельца;
  • всех остальный пользователей.
Аргумент команди chmod, который задает разрешение, может быть записан в двух форматах: в числовом или символьном.
Пример - значения прав «755»
 
Владелец
Группа
Остальные
Восьмеричное значение
7
5
5
Символьная запись
rwx
r-x
r-x
Обозначение типа пользователя
u
g
o
Для директорий со всего списка обычно применяют только 0, 5 и 7 - полный запрет, чтение и полный доступ.
В нашем случае 700 (-rwx------) означает, что владелец может читать, записывать и запускать для выполнения, а никто другой не имеет права выполнять любые действия.
Результаты выполнения команды ls -lR ~/.ssh:
/home/steve/.ssh:
total 16
drwx------    2 steve    steve        4096 Nov 22 13:11 ./
drwx------    6 steve    steve        4096 Nov 22 16:10 ../
-rw-------    1 steve    steve        1150 Nov 22 13:11 authorized_keys
Теперь можно выйти из системы.
Прикрепление личного ключа сессии SSH
Теперь, когда публичные/личные ключи созданы, они могут быть связаны с сессией SSH. Во-первых, мы сделаем это в PuTTY, запустив программу и загрузив необходимую сессию.
Выберите Соединение (Connection): SSH: панель Auth в категории слева, заполните файл личного ключа для поля аутентификации, перейдя к файлу .ppk, сохраненному ранее. Вернитесь к уровню категории сессии и сохраните текущую сессию.
На данный момент, клиент PuTTY (на Windows) и сервер OpenSSH (на Rasbian) настроены на безопасный доступ с публичным ключом.
SSH Pi 10
Подключение через публичный ключ
Запустите PuTTY с возможностью загрузить сохраненную сессию с личным ключом:
SSH Pi 11
Вместо того, чтобы вводить пароль учетной записи (который будет отличаться на каждой удаленной системе), система просит кодовую фразу, которая защищает локальный личный ключ. Когда личный ключ вписывается в публичный ключ на сервере OpenSSH, то разрешает доступ и предоставляет оболочку пользователю.
Важно отметить, что при том, что пользователь должен ввести секретное слово при входе в систему, фраза связана с локальным личным ключом, а не с удаленным аккаунтом. Даже если публичный ключ пользователя установлен на 1000 различных удаленных серверах, требуется одна и та же фраза для личного ключа для всех них. Это значительно упрощает задачу запоминания учетных данных для доступа и делает его более безопасным.
Отключение парольной аутентификации на OpenSSH
После того, как публичный и личный ключи пользователя проверены как правильные, можно полностью отключить парольную аутентификацию. Это исключает все возможные попытки подбора пароля и резко возрастает безопасность.
Тем не менее, для машин, которые физически не локальные, будет целесообразным отложить отключение аутентификации, пока не совсем ясно, что ключ доступа работает нормально, особенно, когда есть несколько пользователей. После того, как парольная аутентификация будет отключена, даже пароль администратора не позволит войти в систему.
Эти новые свойства для публичного ключа доступа рекомендуется очень внимательно протестировать. 
Настройки демона SSH можно найти в файле sshd_config и часто хранятся в директории /etc/ssh/. В этом текстовом файле, который относительно легко прочитать, мы будем искать две записи, которые нужно изменить.
Первая заключается в создании для PasswordAuthentication значение no. Оно может быть явно установлено в yes, или быть закомментировано, чтобы использовать значение по умолчанию, но мы хотим явно отключить его.
Во-вторых, мы хотим отключить SSH протокол версии 1: он старый, имеет несколько существенных слабостей в безопасности и не должен быть разрешен для наружного использования.
Меняем файл конфигурации и убеждаемся, что две записи ключевых слов установлены правильно, а старые записи в файле /etc/ssh/sshd_config закомментированы:
# Protocol1,2
Protocol 2
PasswordAuthentication no
Как только файл конфигурации будет сохранен, демон безопасной оболочки должен быть перезапущен, на большинстве платформ это может быть сделано с механизмом "service":
# service sshd restart
Мы убиваем демона прослушивания и перезапускаем его, но не прекращаем любые существующие индивидуальные сессии пользователя. Тем, кто считает это рискованным шагом, предлагается просто перезагрузить машину.
На данный момент, OpenSSH больше не принимает пароли любого вида, доступ предоставляется только для пользователей с заранее установленными публичными ключами.
Разрешение поддержки агента SSH
До этого момента, мы уделили большое внимание безопасности доступа к системе, но он, как и раньше, не очень удобен: мы, как и раньше, каждый раз должны вводить комплексную идентификационную фразу. Это может стать утомительным, если используется большое количество систем.
К счастью, набор SSH обеспечивает прекрасный механизм для разблокировки личного ключа один раз, и позволяет отдельные соединения SSH без запроса на ввод пароля каждый раз.

SSH Pi 12

Найдите и запустите программу Pageant.exe с того же места, что и другие связанные с PuTTY файлы, а он поставит себя в системном трее (в правом нижнем углу рядом с часами).
Дважды щелкните на иконке в трее и запустится диалоговое окно с пустым списком ключей. Выберите Добавить ключ (AddKey) и перейдите в каталог .ppk файла, который содержит личный ключ. Когда будет запрос пароля, введите его и нажмите кнопку ОК. Нажмите кнопку Закрыть (Close), чтобы закрыть агента.
Теперь запустите одну из уже настроенных сессий SSH к удаленному хосту, который использует публичный ключ: спрашивает агента для личного ключа, отдаленно обменяется с ним и предоставит доступ без дальнейшего вмешательства пользователя.
Примечание - вдумчивый читатель может только удивляться, как агент хранит данные, и не могут ли ненадежные программы тайком получить этот личный ключ. Мы не знаем, как это работает, но никогда не слышали о реальных проблемах безопасности по этому вопросу.
Предвалительная загрузка личного ключа
SSH Pi  13
Первое, что многие пользователи PuTTY делают, когда входят в систему в течение дня, является запуск агента и добавления личного ключа. Это всего несколько шагов, но мы можем немного больше их оптимизировать. Если мы запустим агент с файлом личного ключа как параметром, то он загружает ключ автоматически.
Выберите Pageant.exe и щелкните правой кнопкой мыши, чтобы скопировать его значок. Вставьте значок как ярлык на рабочем столе, щелкните правой кнопкой мыши и выберите Свойства. Введите полный путь к .ppk файлу личного ключа как параметра и сохраните изменения.
Дважды щелкнув этот значок, Вы загрузите файл ключей, который требует парольную фразу. Введя ее один раз, это будет последний раз, когда это необходимо сделать, пока агент будет оставаться прикрепленным.
(По материалам EN: unixwiz.net)
 
>
КнигаНовости Практика поискаПартнерыО нас
Підтримка та дизайн: Могильний С.С. Шаблон: Joomla Templates by BuyHTTP Joomla Hosting