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

Материал из Wiren Board
 
(не показаны 34 промежуточные версии 4 участников)
Строка 1: Строка 1:
'''SSH''' - протокол, при помощи которого можно получить доступ к консоли Wiren Board через локальную сеть или Интернет. Смотрите [http://en.wikipedia.org/wiki/Secure_Shell описание в Википедии]. Кроме SSH, получить доступ к консоли можно поключившись напрямую к устройству через [[Debug UART]].
{{DISPLAYTITLE: Как подключиться к консоли контроллера Wiren Board по SSH }}
== Как зайти на Wiren Board по SSH ==
=== Необходимая информация ===
Чтобы зайти на устройство, вам нужно знать три вещи:
# IP-адрес устройства - смотрите статью [[Как узнать IP-адрес контроллера]]
# Логин пользователя: ''root''
# Пароль пользователя: ''wirenboard''


=== Установка SSH-клиента ===
== Введение ==
Для работы с SSH установите на вашем компьютере утилиту - SSH-клиент, например, PuTTY:
{{YouTube
* версия для Windows - [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe скачать с официального сайта]
|link=https://youtu.be/VA_XHrY1RVA?feature=shared&t=500
* версия для Linux Debian или Ubuntu - выполните команду ''apt-get install putty''
|text= Работа в консоли контроллера Wiren Board 7 — SSH
}}
SSH — это протокол, при помощи которого можно получить доступ к консоли Wiren Board через локальную сеть или Интернет. Смотрите [http://en.wikipedia.org/wiki/Secure_Shell описание в Википедии].  


=== Подключение ===
Кроме SSH, получить доступ к консоли можно через [[Special:MyLanguage/Debug Console|Debug Console]].
#Запустите приложение, введите IP-адрес, убедитесь, что выбрано подключение по SSH, нажмите ''Open''.
 
#:[[Файл:Putty enter ip.png|500px]]
<gallery mode="packed" heights="120px">
#При первом подключении к контроллеру появится запрос на приём от него ключа для шифрования соединения - нажмите ''Accept''.
Image: Putty logged in.png | Консоль контроллера Wiren Board
#:[[Файл:Putty accept key.png|300px]]
Image: Putty enter ip.png | Настройка SSH-соединения в программе PuTTY
#Когда откроется окно консоли, в нём появится запрос имени пользователя - введите ''root'' и нажмите ''Enter''; появится запрос пароля - введите ''wirenboard'' (вводимые символы не будут отображаться) и нажмите ''Enter''.
</gallery>
#:[[Файл:Putty login.png]]
 
#Появится приветственное сообщение - вы в консоли контроллера.
== Логин и пароль ==
#:[[Файл:Putty logged in.png]]
{{note|warn|Смените стандартный пароль! Для удалённого доступа к контроллеру используйте [[Wiren Board Cloud]]. Если всё же надо получить прямой доступ по IP-адресу: используйте авторизацию к SSH по ключу, обязательно [[WebUI_Password |защитите веб-интерфейс и MQTT-брокер сложным паролем]], а также проверьте, что нет других проблем безопасности.}}
 
{{Wbincludes:Controller SSH Default Login Password}}
 
После первого логина в консоль контроллера, рекомендуем сменить пароль на более сложный, так его будет сложнее подобрать. Если вы не знаете, какой пароль выбрать, воспользуйтесь [https://bitwarden.com/password-generator/ бесплатным генератором паролей]. Если предпочитаете придумывать пароль самостоятельно, проверьте его сложность [https://bitwarden.com/password-strength/ бесплатным тестером паролей].
 
Для смены пароля в консоли контроллера ведите команду <code>passwd</code> и дважды введите новый пароль:
<syntaxhighlight lang="console">
# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
</syntaxhighlight>
 
== Подключение к SSH по ключу ==
Если к контроллеру есть доступ из интернета, то пароли рано или поздно могут подобрать. А ещё сам факт перебора паролей приводит к сильной загрузке процессора контроллера, что сказывается на его производительности.
 
Чтобы этого избежать — рекомендуем использовать ключи доступа, один из которых остаётся у вас на компьютере, а другой отправляется на контроллер.
 
Кроме этого 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>
# Измените параметра с yes на no:
#:<syntaxhighlight lang="bash">
PasswordAuthentication no
</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>

Текущая версия на 13:41, 21 июня 2024


Введение

Работа в консоли контроллера Wiren Board 7 — SSH

SSH — это протокол, при помощи которого можно получить доступ к консоли Wiren Board через локальную сеть или Интернет. Смотрите описание в Википедии.

Кроме SSH, получить доступ к консоли можно через Debug Console.

Логин и пароль

Смените стандартный пароль! Для удалённого доступа к контроллеру используйте Wiren Board Cloud. Если всё же надо получить прямой доступ по IP-адресу: используйте авторизацию к SSH по ключу, обязательно защитите веб-интерфейс и MQTT-брокер сложным паролем, а также проверьте, что нет других проблем безопасности.

Учётная запись по умолчанию: логин root, пароль wirenboard.

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

Для смены пароля в консоли контроллера ведите команду passwd и дважды введите новый пароль:

# passwd
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

Подключение к SSH по ключу

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

Чтобы этого избежать — рекомендуем использовать ключи доступа, один из которых остаётся у вас на компьютере, а другой отправляется на контроллер.

Кроме этого SSH-ключи можно использовать при подключении к контроллеру через Wiren Board Cloud. Технически это ничем не отличается от подключения с компьютера с той лишь разницей, что после генерации ключа и его загрузки в контроллер, приватный ключ надо будет загрузить в облако на специальной странице.

Генерация ключа

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

Компьютер с Windows:

  1. Откройте Power Shell.
  2. Введите команду
    ssh-keygen
    
пара ключей будет сохранена в C:\Users\<ИмяПользователя>/.ssh

Компьютер с Linux:

  1. Откройте командную строку.
  2. Введите команду
    ssh-keygen
    
пара ключей будет сохранена в /home/<ИмяПользователя>/.ssh/

В паре два файла:

  • id_rsa — приватный ключ, он остаётся у вас на компьютере;
  • id_rsa.pub — публичный ключ, его надо отправить на контроллер.

Загрузка ключа на сервер

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

Ниже мы отправим публичный ключ id_rsa.pub на контроллер с адресом 192.168.42.1 и логином для подключения root. В процессе будет предложено ввести пароль от учётной записи на контроллере.

Компьютер с Windows:

  1. Откройте Power Shell.
  2. Введите команду:
    type $env:USERPROFILE\.ssh\id_rsa.pub | ssh root@192.168.42.1 "cat >> .ssh/authorized_keys"
    

Компьютер с Linux:

  1. Откройте командную строку.
  2. Введите команду
    ssh-copy-id root@192.168.42.1
    

Запрет авторизации по паролю

Это полезно сделать, чтобы у злоумышленников не было возможности подбирать пароль. Убедитесь, что у вас есть доступ к консоли контроллера без пароля.

Чтобы отключить проверку пароля при подключении по SSH:

  1. Подключитесь к контроллеру по SSH.
  2. Откройте файл конфигурации:
    nano /etc/ssh/sshd_config
    
  3. Измените параметра с yes на no:
    PasswordAuthentication no
    
  4. Нажмите Ctrl+S для сохранения изменений, Ctrl+X — для выхода из редактора.

Теперь к контроллеру подключиться по SSH можно будет только с компьютера, на котором есть приватный ключ. Процесс подключения ничем не отличается от обычного, кроме того, что пароль больше не будет запрашиваться. Если вам надо иметь доступ к контроллеру с нескольких компьютеров — скопируйте на них приватный ключ, или повторите на них процедуру генерации и добавления новых ключей.

Если вы отключили доступ по паролю и потеряли приватный ключ, включите его снова через Debug Console.

Программы

Windows

Для операционной системы Windows, используйте бесплатную программу PuTTY.

Linux

В операционной системе Linux, используйте PuTTY или просто выполните в консоли команду:

ssh root@192.168.42.1

Где 192.168.42.1 — IP-адрес контроллера, а root — имя пользователя. Если вы подключаетесь к контроллеру в первый раз, то система предложит принять сертификат — введите yes.

IP-адрес зависит от способа подключения и настроек контроллера. Подробнее читайте в статье Как узнать IP-адрес контроллера.

Основные команды консоли

  • ls — выводит список файлов.
  • ls -l — выводит список файлов, а также права доступа, владельца и путь к оригиналу, если файл является ссылкой.
  • pwd — выводит путь к текущему каталогу, в котором мы находимся.
  • cd — меняет текущий каталог:
    • перейти в указанный каталог:
      cd /путь/к/каталогу
      
    • перейти на верхний уровень:
      cd ..
      
    • перейти в домашний каталог пользователя:
      cd ~
      
  • mv — перемещает файл или каталог, можно использовать и для переименования:
    # переместить файл
    mv ~/filename.txt /новый_путь/filename.txt
    
    # переместить каталог
    mv ~/dirname /новый_путь/dirname
    
    # переименовать файл
    mv ~/filename.txt ~/newfilename.txt
    
  • rm — удаляет файлы и каталоги:
    # удалить файл
    rm ~/filename.txt
    
    # удалить каталог каталог со всем содержимым
    rm -r ~/dirname
    
  • cp — копирует файлы и каталоги:
    cp file.txt file_backup.txt
    
  • cat — выводит содержимое файла на экран:
    cat file.txt
    
  • mkdir — создаёт один или несколько каталогов с указанным именем:
    mkdir newdirname
    
  • chmod — изменяет права доступа к файлам и каталогам:
    # использование
    chmod опции /путь/к/файлу
    
    # например, сделать файл исполняемым
    chmod +x ~/filename.txt
    
  • touch — создаёт файлы любого типа:
    touch newfilename.txt
    
  • find — поиск файлов, например, найдём файл interfaces в каталоге /mnt/data/:
    # find /mnt/data -name "interfaces"
    /mnt/data/etc/network/interfaces
    
  • nano редактор текстовых файлов.
  • df — показывает доступное дисковое пространство:
    # 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
    
  • --help — посмотреть справку по команде:
    cd --help
    

Обновление прошивки

Приветственный экран команды screen

При подключении по SSH есть риск, что соединение будет разорвано: закрыли окно подключения, пропала связь и т.п. Поэтому важные команды, например, обновление прошивки, лучше выполнять через утилиту screen. Утилита создаст на контроллере виртуальную сессию командной оболочки, поэтому обрыв связи не повлияет на выполнение запущенных в ней команд.

Утилита не входит в стандартный пакет программ, поэтому ее нужно сначала установить:

apt install screen

Как работать:

  1. Запустите сеанс screen командой:
    screen
    
    После подключения вы увидите приветственный экран программы, нажмите на клавиатуре Пробел или Enter — откроется виртуальная консоль, которая внешне ничем не отличается от обычной.
  2. Дальше вводите нужные вам команды, а при разрыве связи достаточно будет переподключиться к контроллеру и открыть работающий сеанс командой:
    screen -r
    
  3. Для выхода из виртуальной консоли введите:
    exit