|
|
(не показано 40 промежуточных версий 4 участников) |
Строка 1: |
Строка 1: |
| {{DISPLAYTITLE: Как подключиться к консоли контроллера Wiren Board по SSH }}
| | <languages/> |
| | <translate> |
| | '''SSH''' - протокол, при помощи которого можно получить доступ к консоли Wiren Board через локальную сеть или Интернет. Смотрите [http://en.wikipedia.org/wiki/Secure_Shell описание в Википедии]. Кроме SSH, получить доступ к консоли можно поключившись напрямую к устройству через [[Special:MyLanguage/Debug UART|Debug UART]]. |
|
| |
|
| == Введение == | | == Как зайти на Wiren Board по SSH == |
| {{PeerTube
| |
| | link= https://peertube.wirenboard.com/video-playlists/embed/6623c76e-1abe-4728-959c-f5dde919d80c?playlistPosition=4
| |
| | playlist = true
| |
| | text= Работа в консоли контроллера Wiren Board — SSH
| |
| }}
| |
|
| |
|
| SSH — это протокол, при помощи которого можно получить доступ к консоли Wiren Board через локальную сеть или Интернет. Смотрите [http://en.wikipedia.org/wiki/Secure_Shell описание в Википедии].
| |
|
| |
|
| Кроме SSH, получить доступ к консоли можно через [[Special:MyLanguage/Debug Console|Debug Console]].
| | === Необходимая информация === |
|
| |
|
| <gallery mode="packed" heights="120px">
| | Чтобы зайти на устройство, вам нужно знать три вещи: |
| Image: Putty logged in.png | Консоль контроллера Wiren Board
| | # IP-адрес устройства - смотрите статью [[Special:MyLanguage/Как узнать IP-адрес контроллера|Как узнать IP-адрес контроллера]] |
| Image: Putty enter ip.png | Настройка SSH-соединения в программе PuTTY
| | # Логин пользователя: ''root'' |
| </gallery>
| | # Пароль пользователя: ''wirenboard'' |
|
| |
|
| == Логин и пароль ==
| |
| {{note|warn|Смените стандартный пароль! Для удалённого доступа к контроллеру используйте [[Wiren Board Cloud]]. Если всё же надо получить прямой доступ по IP-адресу: используйте авторизацию к SSH по ключу, обязательно [[WebUI_Password |защитите веб-интерфейс и MQTT-брокер сложным паролем]], а также проверьте, что нет других проблем безопасности.}}
| |
|
| |
|
| {{Wbincludes:Controller SSH Default Login Password}}
| | === Установка SSH-клиента === |
|
| |
|
| После первого логина в консоль контроллера, рекомендуем сменить пароль на более сложный, так его будет сложнее подобрать. Если вы не знаете, какой пароль выбрать, воспользуйтесь [https://bitwarden.com/password-generator/ бесплатным генератором паролей]. Если предпочитаете придумывать пароль самостоятельно, проверьте его сложность [https://bitwarden.com/password-strength/ бесплатным тестером паролей].
| | Для работы с SSH установите на вашем компьютере утилиту - SSH-клиент, например, PuTTY: |
| | * версия для Windows - [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe скачать с официального сайта] |
| | * версия для Linux Debian или Ubuntu - выполните команду ''apt-get install putty'' |
|
| |
|
| Для смены пароля в консоли контроллера ведите команду <code>passwd</code> и дважды введите новый пароль:
| |
| <syntaxhighlight lang="console">
| |
| # passwd
| |
| Enter new UNIX password:
| |
| Retype new UNIX password:
| |
| passwd: password updated successfully
| |
| </syntaxhighlight>
| |
|
| |
|
| == Подключение к SSH по ключу == | | === Подключение === |
| {{note|warn| В большинстве домашних инсталляций этого делать не нужно. Убедитесь, что понимаете смысл выполняемых команд, ошибки в процессе могут привести к перезагрузке контроллера — понадобится отключать [[Watchdog]], подключаться к [[Debug Console]], восстанавливать конфиг по умолчанию.}}
| |
| Если к контроллеру есть доступ из интернета, то пароли рано или поздно могут подобрать. А ещё сам факт перебора паролей приводит к сильной загрузке процессора контроллера, что сказывается на его производительности.
| |
|
| |
|
| Чтобы этого избежать — рекомендуем использовать ключи доступа, один из которых остаётся у вас на компьютере, а другой отправляется на контроллер.
| | #Запустите приложение, введите IP-адрес, убедитесь, что выбрано подключение по SSH, нажмите ''Open''. |
| | | #:[[Special:MyLanguage/Файл:Putty enter ip.png|500px]] |
| Кроме этого SSH-ключи можно использовать при подключении к контроллеру через [[Wiren Board Cloud]]. Технически это ничем не отличается от подключения с компьютера с той лишь разницей, что после генерации ключа и его загрузки в контроллер, приватный ключ надо будет загрузить в облако на специальной странице.
| | #При первом подключении к контроллеру появится запрос на приём от него ключа для шифрования соединения - нажмите ''Accept''. |
| | | #:[[Special:MyLanguage/Файл:Putty accept key.png|300px]] |
| === Генерация ключа ===
| | #Когда откроется окно консоли, в нём появится запрос имени пользователя - введите ''root'' и нажмите ''Enter''; появится запрос пароля - введите ''wirenboard'' (вводимые символы не будут отображаться) и нажмите ''Enter''. |
| Для авторизации по ключу нам понадобятся приватный и публичный ключи. Процесс генерации немного отличается в разных операционных системах. В процессе будет задано несколько вопросов, можно просто нажать на клавиатуре <kbd>Enter</kbd> для использования значений по умолчанию.
| | #:[[Файл:Putty login.png|Файл:Putty login.png]] |
| | | #Появится приветственное сообщение - вы в консоли контроллера. |
| Компьютер с Windows:
| | #:[[Файл:Putty logged in.png|Файл:Putty logged in.png]] |
| # Откройте Power Shell.
| | </translate> |
| # Введите команду
| |
| #:<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.d/user-settings.conf
| |
| </syntaxhighlight>
| |
| # Вставьте туда строки:
| |
| #:<syntaxhighlight lang="bash">
| |
| PasswordAuthentication no
| |
| PubkeyAuthentication yes
| |
| </syntaxhighlight>
| |
| #{{Wbincludes:Save nano}}
| |
| # Проверьте, что в конфигурации сервиса нет ошибок:
| |
| #:<syntaxhighlight lang="bash">
| |
| sshd -t
| |
| </syntaxhighlight>
| |
| # Если все в порядке, перезапустите sshd:
| |
| #:<syntaxhighlight lang="bash"> | |
| systemctl restart sshd
| |
| </syntaxhighlight>
| |
| | |
| Теперь к контроллеру подключиться по 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> | |