16 433
правки
(→Запрет авторизации по паролю: Поправил) |
|||
(не показано 27 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: Как | {{DISPLAYTITLE: Как подключиться к консоли контроллера Wiren Board по SSH }} | ||
== Введение == | == Введение == | ||
{{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 — это протокол, при помощи которого можно получить доступ к консоли Wiren Board через локальную сеть или Интернет. Смотрите [http://en.wikipedia.org/wiki/Secure_Shell описание в Википедии]. | ||
Кроме SSH, получить доступ к консоли можно через [[Special:MyLanguage/Debug | Кроме SSH, получить доступ к консоли можно через [[Special:MyLanguage/Debug Console|Debug Console]]. | ||
<gallery mode="packed" heights="120px"> | |||
Image: Putty logged in.png | Консоль контроллера Wiren Board | |||
Image: Putty enter ip.png | Настройка SSH-соединения в программе PuTTY | |||
</gallery> | |||
== Логин и пароль == | == Логин и пароль == | ||
{{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> | |||
# Измените параметр PasswordAuthentication с yes на no: | |||
#:<syntaxhighlight lang="bash"> | |||
PasswordAuthentication no | |||
</syntaxhighlight> | |||
# Измените параметр PubkeyAuthentication с no на yes: | |||
#:<syntaxhighlight lang="bash"> | |||
PubkeyAuthentication yes | |||
</syntaxhighlight> | |||
#{{Wbincludes:Save nano}} | |||
Теперь к контроллеру подключиться по SSH можно будет только с компьютера, на котором есть приватный ключ. Процесс подключения ничем не отличается от обычного, кроме того, что пароль больше не будет запрашиваться. Если вам надо иметь доступ к контроллеру с нескольких компьютеров — скопируйте на них приватный ключ, или повторите на них процедуру генерации и добавления новых ключей. | |||
Если вы отключили доступ по паролю и потеряли приватный ключ, включите его снова через [[Debug Console]]. | |||
== Программы == | == Программы == | ||
Строка 27: | Строка 116: | ||
IP-адрес зависит от способа подключения и настроек контроллера. Подробнее читайте в статье [[How to find IP address|Как узнать IP-адрес контроллера]]. | 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> |