Перейти к содержанию

Навигация

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

7213 байт добавлено ,  5 дней назад
 
(не показано 18 промежуточных версий этого же участника)
Строка 2: Строка 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 — это протокол, при помощи которого можно получить доступ к консоли Wiren Board через локальную сеть или Интернет. Смотрите [http://en.wikipedia.org/wiki/Secure_Shell описание в Википедии].  


Кроме SSH, получить доступ к консоли можно через [[Special:MyLanguage/Debug UART|Debug UART]].
Кроме SSH, получить доступ к консоли можно через [[Special:MyLanguage/Debug Console|Debug Console]].


<gallery mode="packed" heights="200px">
<gallery mode="packed" heights="120px">
Image: Putty logged in.png | Консоль контроллера Wiren Board
Image: Putty logged in.png | Консоль контроллера Wiren Board
Image: Putty enter ip.png | Настройка SSH-соединения в программе PuTTY
Image: Putty enter ip.png | Настройка SSH-соединения в программе PuTTY
</gallery>
</gallery>
== Логин и пароль ==
== Логин и пароль ==
Логин и пароль по умолчанию:
{{note|warn|Смените стандартный пароль! Для удалённого доступа к контроллеру используйте [[Wiren Board Cloud]]. Если всё же надо получить прямой доступ по IP-адресу: используйте авторизацию к SSH по ключу, обязательно [[WebUI_Password |защитите веб-интерфейс и MQTT-брокер сложным паролем]], а также проверьте, что нет других проблем безопасности.}}
* Логин: '''root'''
 
* Пароль: '''wirenboard'''
{{Wbincludes:Controller SSH Default Login Password}}
 
После первого логина в консоль контроллера, рекомендуем сменить пароль на более сложный, так его будет сложнее подобрать. Если вы не знаете, какой пароль выбрать, воспользуйтесь [https://bitwarden.com/password-generator/ бесплатным генератором паролей]. Если предпочитаете придумывать пароль самостоятельно, проверьте его сложность [https://bitwarden.com/password-strength/ бесплатным тестером паролей].


Рекомендуем сменить пароль по умолчанию, для этого введите в консоли контроллера команду <code>passwd</code> и дважды введите новый пароль:
Для смены пароля в консоли контроллера ведите команду <code>passwd</code> и дважды введите новый пароль:
<syntaxhighlight lang="console">
<syntaxhighlight lang="console">
# passwd
# passwd
Строка 22: Строка 29:
passwd: password updated successfully
passwd: password updated successfully
</syntaxhighlight>
</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]].


== Программы ==
== Программы ==
Строка 125: Строка 204:


== Обновление прошивки ==
== Обновление прошивки ==
[[Image: screen-help.png |300px|thumb|right| Приветственный экран команды screen ]]
При подключении по SSH есть риск, что соединение будет разорвано: закрыли окно подключения, пропала связь и т.п. Поэтому важные команды, например, обновление прошивки, лучше выполнять через утилиту [https://help.ubuntu.ru/wiki/screen screen]. Утилита создаст на контроллере виртуальную сессию командной оболочки, поэтому обрыв связи не повлияет на выполнение запущенных в ней команд.
При подключении по SSH есть риск, что соединение будет разорвано: закрыли окно подключения, пропала связь и т.п. Поэтому важные команды, например, обновление прошивки, лучше выполнять через утилиту [https://help.ubuntu.ru/wiki/screen screen]. Утилита создаст на контроллере виртуальную сессию командной оболочки, поэтому обрыв связи не повлияет на выполнение запущенных в ней команд.


Строка 132: Строка 212:
</syntaxhighlight>
</syntaxhighlight>


Запустить сеанс screen можно командой:
Как работать:
<syntaxhighlight lang="bash">
# Запустите сеанс screen командой:
#: <syntaxhighlight lang="bash">
screen
screen
</syntaxhighlight>
</syntaxhighlight>
После этого можно выполнять команды для обновления прошивок в виртуальной консоли. При разрыве связи достаточно будет переподключиться к контроллеру и открыть работающий сеанс screen экран, выполнив команду:
#:После подключения вы увидите приветственный экран программы, нажмите на клавиатуре <kbd>Пробел</kbd> или <kbd>Enter</kbd> — откроется виртуальная консоль, которая внешне ничем не отличается от обычной.
<syntaxhighlight lang="bash">
# Дальше вводите нужные вам команды, а при разрыве связи достаточно будет переподключиться к контроллеру и открыть работающий сеанс командой:
#:<syntaxhighlight lang="bash">
screen -r
screen -r
</syntaxhighlight>
</syntaxhighlight>
 
# Для выхода из виртуальной консоли введите:
Завершить работу утилиты командой:
#:<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
exit
exit
</syntaxhighlight>
</syntaxhighlight>