SSH: различия между версиями

Материал из Wiren Board
(не показана 31 промежуточная версия 2 участников)
Строка 1: Строка 1:
{{DISPLAYTITLE: Как подключиться к консоли контроллера Wiren Board по SSH }}
<languages/>
<translate>
<!--T:1-->
'''SSH''' - протокол, при помощи которого можно получить доступ к консоли Wiren Board через локальную сеть или Интернет. Смотрите [http://en.wikipedia.org/wiki/Secure_Shell описание в Википедии]. Кроме SSH, получить доступ к консоли можно поключившись напрямую к устройству через [[Special:MyLanguage/Debug UART|Debug UART]].


== Введение ==
== Как зайти на Wiren Board по SSH == <!--T:2-->
{{YouTube
|link=https://youtu.be/VA_XHrY1RVA?feature=shared&t=500
|text= Работа в консоли контроллера Wiren Board 7 — SSH
}}
SSH — это протокол, при помощи которого можно получить доступ к консоли Wiren Board через локальную сеть или Интернет. Смотрите [http://en.wikipedia.org/wiki/Secure_Shell описание в Википедии].


Кроме SSH, получить доступ к консоли можно через [[Special:MyLanguage/Debug Console|Debug Console]].
=== Необходимая информация === <!--T:3-->


<gallery mode="packed" heights="120px">
<!--T:4-->
Image: Putty logged in.png | Консоль контроллера Wiren Board
Чтобы зайти на устройство, вам нужно знать три вещи:
Image: Putty enter ip.png | Настройка SSH-соединения в программе PuTTY
# IP-адрес устройства - смотрите статью [[Special:MyLanguage/Как узнать IP-адрес контроллера|Как узнать IP-адрес контроллера]]
</gallery>
# Логин пользователя: ''root''
# Пароль пользователя: ''wirenboard''


== Логин и пароль ==
=== Установка SSH-клиента === <!--T:5-->
{{note|warn|Смените стандартный пароль! Для удалённого доступа к контроллеру используйте [[Wiren Board Cloud]]. Если всё же надо получить прямой доступ по IP-адресу: используйте авторизацию к SSH по ключу, обязательно [[WebUI_Password |защитите веб-интерфейс и MQTT-брокер сложным паролем]], а также проверьте, что нет других проблем безопасности.}}


{{Wbincludes:Controller SSH Default Login Password}}
<!--T:6-->
Для работы с SSH установите на вашем компьютере утилиту - SSH-клиент, например, PuTTY:
* версия для Windows - [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe скачать с официального сайта]
* версия для Linux Debian или Ubuntu - выполните команду ''apt-get install putty''


После первого логина в консоль контроллера, рекомендуем сменить пароль на более сложный, так его будет сложнее подобрать. Если вы не знаете, какой пароль выбрать, воспользуйтесь [https://bitwarden.com/password-generator/ бесплатным генератором паролей]. Если предпочитаете придумывать пароль самостоятельно, проверьте его сложность [https://bitwarden.com/password-strength/ бесплатным тестером паролей].
=== Подключение === <!--T:7-->


Для смены пароля в консоли контроллера ведите команду <code>passwd</code> и дважды введите новый пароль:
<!--T:8-->
<syntaxhighlight lang="console">
#Запустите приложение, введите IP-адрес, убедитесь, что выбрано подключение по SSH, нажмите ''Open''.
# passwd
#:[[Файл:Putty enter ip.png|500px]]
Enter new UNIX password:
#При первом подключении к контроллеру появится запрос на приём от него ключа для шифрования соединения - нажмите ''Accept''.
Retype new UNIX password:
#:[[Файл:Putty accept key.png|300px]]
passwd: password updated successfully
#Когда откроется окно консоли, в нём появится запрос имени пользователя - введите ''root'' и нажмите ''Enter''; появится запрос пароля - введите ''wirenboard'' (вводимые символы не будут отображаться) и нажмите ''Enter''.
</syntaxhighlight>
#:[[Файл:Putty login.png|Файл:Putty login.png]]
 
#Появится приветственное сообщение - вы в консоли контроллера.
== Подключение к SSH по ключу ==
#:[[Файл:Putty logged in.png|Файл:Putty logged in.png]]
Если к контроллеру есть доступ из интернета, то пароли рано или поздно могут подобрать. А ещё сам факт перебора паролей приводит к сильной загрузке процессора контроллера, что сказывается на его производительности.
</translate>
 
Чтобы этого избежать — рекомендуем использовать ключи доступа, один из которых остаётся у вас на компьютере, а другой отправляется на контроллер.
 
Кроме этого SSH-ключи можно использовать при подключении к контроллеру через [[Wiren Board Cloud]]. Технически это ничем не отличается от подключения с компьютера с той лишь разницей, что после генерации ключа и его загрузки в контроллер, приватный ключ надо будет загрузить в облако на специальной странице.
 
=== Генерация ключа ===
Для авторизации по ключу нам понадобятся приватный и публичный ключи. Процесс генерации немного отличается в разных операционных системах. В процессе будет задано несколько вопросов, можно просто нажать на клавиатуре <kbd>Enter</kbd> для использования значений по умолчанию.
 
Компьютер с Windows:
# Откройте Power Shell.
# Введите команду
#:<syntaxhighlight lang="bash">
ssh-keygen
</syntaxhighlight>
:пара ключей будет сохранена в <code>C:\Users\<ИмяПользователя>/.ssh</code>
Компьютер с Linux:
# Откройте командную строку.
# Введите команду
#:<syntaxhighlight lang="bash">
ssh-keygen
</syntaxhighlight>
:пара ключей будет сохранена в <code>/home/<ИмяПользователя>/.ssh/</code>
 
В паре два файла:
* id_rsa  — приватный ключ, он остаётся у вас на компьютере;
* id_rsa.pub — публичный ключ, его надо отправить на контроллер.
 
=== Загрузка ключа на сервер ===
После того, ка мы сгенерировали ключи, загрузим публичный ключ на контроллер. Процедура немного отличается в разных операционных системах.
 
Ниже мы отправим публичный ключ <code>id_rsa.pub</code> на контроллер с адресом 192.168.42.1 и логином для подключения root. В процессе будет предложено ввести пароль от учётной записи на контроллере.
 
Компьютер с Windows:
# Откройте Power Shell.
# Введите команду:
#:<syntaxhighlight lang="bash">
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh root@192.168.42.1 "cat >> .ssh/authorized_keys"
</syntaxhighlight>
Компьютер с Linux:
# Откройте командную строку.
# Введите команду
#:<syntaxhighlight lang="bash">
ssh-copy-id root@192.168.42.1 
</syntaxhighlight>
 
=== Запрет авторизации по паролю ===
 
Это полезно сделать, чтобы у злоумышленников не было возможности подбирать пароль. Убедитесь, что у вас есть доступ к консоли контроллера без пароля.
 
Чтобы отключить проверку пароля при подключении по SSH:
# Подключитесь к контроллеру по SSH.
# Откройте файл конфигурации:
#:<syntaxhighlight lang="bash">
nano /etc/ssh/sshd_config
</syntaxhighlight>
# Измените параметр PasswordAuthentication с yes на no:
#:<syntaxhighlight lang="bash">
PasswordAuthentication no
</syntaxhighlight>
# Измените параметр PubkeyAuthentication с no на yes:
#:<syntaxhighlight lang="bash">
PubkeyAuthentication yes
</syntaxhighlight>
#{{Wbincludes:Save nano}}
 
Теперь к контроллеру подключиться по SSH можно будет только с компьютера, на котором есть приватный ключ. Процесс подключения ничем не отличается от обычного, кроме того, что пароль больше не будет запрашиваться. Если вам надо иметь доступ к контроллеру с нескольких компьютеров — скопируйте на них приватный ключ, или повторите на них процедуру генерации и добавления новых ключей.
 
Если вы отключили доступ по паролю и потеряли приватный ключ, включите его снова через [[Debug Console]].
 
== Программы ==
 
=== Windows ===
Для операционной системы Windows, используйте [[PuTTY | бесплатную программу PuTTY]].
 
=== Linux ===
В операционной системе Linux, используйте [[PuTTY | PuTTY]] или просто выполните в консоли команду:  
<syntaxhighlight lang="bash">
ssh root@192.168.42.1
</syntaxhighlight>
Где 192.168.42.1 — IP-адрес контроллера, а root — имя пользователя.
Если вы подключаетесь к контроллеру в первый раз, то система предложит принять сертификат — введите <code>yes</code>.
 
IP-адрес зависит от способа подключения и настроек контроллера. Подробнее читайте в статье [[How to find IP address|Как узнать IP-адрес контроллера]].
 
== Основные команды консоли ==
 
* <code>ls</code> — выводит список файлов.
* <code>ls -l</code> — выводит список файлов, а также права доступа, владельца и путь к оригиналу, если файл является ссылкой.
* <code>pwd</code> — выводит путь к текущему каталогу, в котором мы находимся.
* <code>cd</code> — меняет текущий каталог:
** перейти в указанный каталог:
**: <syntaxhighlight lang="bash">
cd /путь/к/каталогу
</syntaxhighlight>
**перейти на верхний уровень:
**: <syntaxhighlight lang="bash">
cd ..
</syntaxhighlight>
** перейти в домашний каталог пользователя:
**: <syntaxhighlight lang="bash">
cd ~
</syntaxhighlight >
* <code>mv</code> — перемещает файл или каталог, можно использовать и для переименования:
*: <syntaxhighlight lang="bash">
# переместить файл
mv ~/filename.txt /новый_путь/filename.txt
 
# переместить каталог
mv ~/dirname /новый_путь/dirname
 
# переименовать файл
mv ~/filename.txt ~/newfilename.txt
 
</syntaxhighlight>
* <code>rm</code> — удаляет файлы и каталоги:
*: <syntaxhighlight lang="bash">
# удалить файл
rm ~/filename.txt
 
# удалить каталог каталог со всем содержимым
rm -r ~/dirname
</syntaxhighlight>
* <code>cp</code> — копирует файлы и каталоги:
*: <syntaxhighlight lang="bash">
cp file.txt file_backup.txt
</syntaxhighlight>
* <code>cat</code> — выводит содержимое файла на экран:
*: <syntaxhighlight lang="bash">
cat file.txt
</syntaxhighlight>
* <code>mkdir</code> — создаёт один или несколько каталогов с указанным именем:
*: <syntaxhighlight lang="bash">
mkdir newdirname
</syntaxhighlight>
* <code>chmod</code> — изменяет права доступа к файлам и каталогам:
*: <syntaxhighlight lang="bash">
# использование
chmod опции /путь/к/файлу
 
# например, сделать файл исполняемым
chmod +x ~/filename.txt
</syntaxhighlight>
* <code>touch</code> — создаёт файлы любого типа:
*: <syntaxhighlight lang="bash">
touch newfilename.txt
</syntaxhighlight>
* <code>find</code> — поиск файлов, например, найдём файл interfaces в каталоге ''/mnt/data/'':
*:<syntaxhighlight lang="console">
# find /mnt/data -name "interfaces"
/mnt/data/etc/network/interfaces
</syntaxhighlight>
* <code>nano</code> — [[NanoEditor | редактор текстовых файлов]].
* <code>df</code> — показывает доступное дисковое пространство:
*:<syntaxhighlight lang="console">
# df -hT
Filesystem    Type      Size  Used Avail Use% Mounted on
/dev/root      ext4      980M  818M  95M  90% /
devtmpfs      devtmpfs  239M    0  239M  0% /dev
tmpfs          tmpfs    248M    0  248M  0% /dev/shm
tmpfs          tmpfs      99M  1.2M  98M  2% /run
tmpfs          tmpfs    5.0M    0  5.0M  0% /run/lock
/dev/mmcblk0p6 ext4      4.7G  1.9G  2.7G  41% /mnt/data
tmpfs          tmpfs      50M    0  50M  0% /run/user/0
 
</syntaxhighlight>
* <code>--help</code> — посмотреть справку по команде:
*: <syntaxhighlight lang="bash">
cd --help
</syntaxhighlight>
 
== Обновление прошивки ==
[[Image: screen-help.png |300px|thumb|right| Приветственный экран команды screen ]]
При подключении по SSH есть риск, что соединение будет разорвано: закрыли окно подключения, пропала связь и т.п. Поэтому важные команды, например, обновление прошивки, лучше выполнять через утилиту [https://help.ubuntu.ru/wiki/screen screen]. Утилита создаст на контроллере виртуальную сессию командной оболочки, поэтому обрыв связи не повлияет на выполнение запущенных в ней команд.
 
Утилита не входит в стандартный пакет программ, поэтому ее нужно сначала установить:
<syntaxhighlight lang="bash">
apt install screen
</syntaxhighlight>
 
Как работать:
# Запустите сеанс screen командой:
#: <syntaxhighlight lang="bash">
screen
</syntaxhighlight>
#:После подключения вы увидите приветственный экран программы, нажмите на клавиатуре <kbd>Пробел</kbd> или <kbd>Enter</kbd> — откроется виртуальная консоль, которая внешне ничем не отличается от обычной.
# Дальше вводите нужные вам команды, а при разрыве связи достаточно будет переподключиться к контроллеру и открыть работающий сеанс командой:
#:<syntaxhighlight lang="bash">
screen -r
</syntaxhighlight>
# Для выхода из виртуальной консоли введите:
#:<syntaxhighlight lang="bash">
exit
</syntaxhighlight>

Версия 11:20, 10 мая 2020

Другие языки:

SSH - протокол, при помощи которого можно получить доступ к консоли Wiren Board через локальную сеть или Интернет. Смотрите описание в Википедии. Кроме SSH, получить доступ к консоли можно поключившись напрямую к устройству через Debug UART.

Как зайти на Wiren Board по SSH

Необходимая информация

Чтобы зайти на устройство, вам нужно знать три вещи:

  1. IP-адрес устройства - смотрите статью Как узнать IP-адрес контроллера
  2. Логин пользователя: root
  3. Пароль пользователя: wirenboard

Установка SSH-клиента

Для работы с SSH установите на вашем компьютере утилиту - SSH-клиент, например, PuTTY:

Подключение

  1. Запустите приложение, введите IP-адрес, убедитесь, что выбрано подключение по SSH, нажмите Open.
    Putty enter ip.png
  2. При первом подключении к контроллеру появится запрос на приём от него ключа для шифрования соединения - нажмите Accept.
    Putty accept key.png
  3. Когда откроется окно консоли, в нём появится запрос имени пользователя - введите root и нажмите Enter; появится запрос пароля - введите wirenboard (вводимые символы не будут отображаться) и нажмите Enter.
    Файл:Putty login.png
  4. Появится приветственное сообщение - вы в консоли контроллера.
    Файл:Putty logged in.png