Сначала в наcтройках raspi-config надо включить SSH сервер, если он еще не включен. В терминале дайте команду
sudo raspi-config
Затем идем Advanced Options - Enter - SSH - Enter. Стрелками выбираем пункт Enable и жмем Enter, затем Ok. Нажимаем Tab, выбираем Finish и выходим из raspi-config. Перезагружаем Raspberry Pi.
Теперь настраиваем Windows. Для подключения по ssh используют программу PuTTY. Заходим на putty.org и скачиваем архив putty.zip с комплектом необходимых программ. Распакуйте архив на диск. У меня получилась папка putty на диске D.
В последних версиях программы (файл .msi) она устанавливается в папку Program Files. Для запуска программы, создания и сохранения файлов в этой папке требуются права администратора. Командную строку также надо запускать от имени администратора. Предварительно на Raspberry Pi создайте в домашней папке скрытый каталог .ssh командой mkdir /home/pi/.ssh (если этого каталога не существует).
Для работы необходимо сгенерировать секретный и public ключи. Запустите puttygen с правами администратора. Для генерации ключей надо непрерывно водить мышкой в окне программы. Для большей безопасности придумайте и впечатайте в поле Key passphrase пароль не менее 8 символов. Можно этого не делать, подключаться будет проще. В поле Confirm passphrase повторите пароль. Сохраните секретный ключ, нажав кнопку Save private key.
Программа запросит имя файла. Укажите имя файла, расширение ppk будет добавлено автоматически. Я сохранил его в папке putty под именем privat_key.ppk. Если вы оставите пустыми поля passphrase, то при сохранении ключа программа выдаст предупреждающее окно:
Вы уверены, что хотите сохранить ключ без защиты паролем? Если нажмете Да, то программа сохранит секретный ключ без парольной защиты.
Сохраните public key в текстовом файле. Щелкните мышкой по кнопке Save public key (Сохранить публичный ключ). Введите имя файла с расширением txt. Я сохранил его под именем win_key.txt в папке putty.
Далее понадобится знать IP-адрес Raspberry Pi в локальной сети. На Raspberry Pi откройте терминал и дайте команду hostname -I (прописная i) или введите команду
ifconfig
У меня Raspberry Pi подключен по Wi-Fi, поэтому IP-адрес указан в секции wlan0 - это адрес 192.168.1.32. Если сеть подключена кабелем, то смотрите адрес в секции eth0.
Запустите командную строку Windows от имени администратора.
По умолчанию это каталог C:\Windows\system32. Перейдите в каталог с программой PuTTY (у меня это диск D и в нем каталог putty). Проверьте доступность хоста командой ping. Затем командой pscp скопируйте win_key.txt на Raspberry Pi в каталог .ssh в создаваемый файл authorized_keys.
pscp win_key.txt pi@<ваш IP адрес>:/home/pi/.ssh/authorized_keys
Если вы получите ошибку "команда не найдена" или "файл, каталог не существует", то укажите полный путь к команде или файлу, например:
C:\Putty\pscp.exe C:\Putty\win_key.txt pi@<ваш IP адрес>:/home/pi/.ssh/authorized_keys
Если вы подключаетесь в первый раз, то каталога .ssh не будет. Создайте его. Находясь в домашнем каталоге /home/pi, дайте команду mkdir .ssh. Точка в имени означает. что каталог скрытый.
Если PuTTY установлена в папке Program Files, то запустите командную строку от имени администратора и перейдите в эту папку, как показано на скриншоте.
При этом придется ввести пароль для логина pi. По умолчанию это raspberry, если вы его, конечно, не поменяли.
Если при этом выдается запрос Store key in cache? (Хранить ключ в кэше?), то нажмите y, для однократного подключения - нажмите n, вообще хотите отказаться - нажмите Enter.
Можно не изощряться так, а просто скопировать win_key.txt на флешку, подключить ее к Raspberry Pi (флешка подмонтируется в каталог /media) и скопировать файл в каталог .ssh, а затем переименовать его в authorized_keys. Удобно это делать в Midnight Commander (аналог Total Commander в Windows). Установить можно командой sudo apt-get install mc.
Каталог .ssh скрытый, в менеджере файлов щелкните правой кнопкой мыши по полю и в меню поставьте галку Показывать скрытые файлы.
У меня authorized_keys уже существует, в нем записан публичный ключ для компьютера Linux Mint. Поэтому я скопировал win_key.txt в другой файл win_key. Теперь мне нужно добавить этот ключ win_key в файл authorized_keys. На Raspberry Pi в терминале дадим команду
sudo nano /home/pi/.ssh/authorized_keys
В редакторе nano откроется для редактирования файл authorized_keys. Пропустите одну строку и поставьте курсор в начало следующей строки. Нажмите F5 - эта функция добавляет к существующему файлу информацию из другого файла. Внизу окна ввел полный путь к файлу win_key.txt. Нажимаем Enter. Добавляется строка с ключом для компьютера Windows. Сохраняем файл (Ctrl+O) и выходим из редактора (Ctrl+X). Таким образом вы можете добавить в authorized_keys несколько ключей для подключения к Raspberry Pi c разных компьютеров вашей локальной сети.
Идем дальше. На компьютере Windows в программе Putty надо создать и сохранить сессию для подключения к Raspberry Pi. Запустите Putty от имени администратора. В левом окне Category щелкните Connection -> SSH -> Auth. В окне справа нажмите кнопку Browse и выберите путь к вашему секретному ключу или впечатайте в поле полный путь к вашему ключу.
В окне Category щелкаем по Session. В поле Host name укажите IP адрес вашего Raspberry Pi. Придумайте название Windows-сессии и укажите его в поле Saved Sessions. Нажмите кнопку Save.
В окне ниже к названию Default Settings должна добавиться строка с названием вашей сессии. Чтобы подключиться к Raspberry Pi, достаточно в окне выбрать имя сессии и нажать кнопку Load.
Должны загрузиться ваши настройки. Нажимаем Open, чтобы начать подключение. Выводится запрос login as, вводим pi. Если при сохранении секретного ключа вы вводили пароль, то для разблокировки потребуется ввести этот пароль. При этом на экран ничего не выводится.
Если пароль не указывали, то ничего не запрашивается, просто происходит подключение. Только потребуется ввести пароль для логина pi.
Соединение по SSH установлено. Можно с компьютера Windows вводить команды так, как будто вы находитесь за клавиатурой Raspberry Pi.
Для выхода из сессии наберите команду exit.
При работе системы Windows образуется много временных файлов. Они тормозят работу системы и приводят к сбоям в работе программ. У некоторых пользователей на диске накапливаются целые гигабайты временных файлов. Если после установки и настройки Putty вы никак не можете подключиться к Raspberry Pi, то установите и запустите программу Ccleaner. Удалите временные файлы и почистите реестр. После этого попробуйте снова подключиться по SSH к Raspberry Pi.
Если подключите новый компьютер, переустановите систему или изменится IP адрес компьютера в локальной сети, то при подключении по ssh к Raspberry Pi будет выдана ошибка.
На скриншоте показана ситуация после переустановки Linux на одном из компьютеров. Из Linux подключаться к Raspberry Pi проще и удобнее, системы-то однородные.
Сообщается, что компьютер не найден в списке известных хостов и приводится команда для исправления ситуации (выделена белым фоном). Выделите мышкой (ЛКМ) эту команду и нажмите колесико или среднюю кнопку мыши. Команда будет вставлена в командную строку терминала, останется только нажать Enter. Выдается сообщение о том, что список хостов обновлен. Снова пробуем подключиться по ssh. На запрос о подключении введите yes. Система запросит пароль на подключение к Raspberry Pi. Введите пароль пользователя и соединение будет установлено.
IP адрес, выдаваемый вашему устройству, может меняться. Чтобы не менять каждый раз настройки Putty, надо закрепить за Raspberry Pi конкретный IP адрес. Как это сделать, описано в статье Как в настройках роутера присвоить статический IP адрес устройству по MAC адресу? Для настройки понадобится MAC адрес. Как его узнать, описано в статье Как узнать и изменить MAC адрес .
В Linux узнать MAC адрес проще. В терминале дайте команду ifconfig. В сообщении для вашего сетевого устройства найдите параметр HWaddr (HardWare address, т.е. адрес "железа"). Это и будет MAC адрес.
Если вы подключитесь к Raspberry Pi с другого компьютера вашей сети, с которого ранее не подключались, то в Windows будет выдано окно
щелкните Да, если хотите постоянно подключаться, Нет - если хотите подключиться только один раз.
Если вы хотите подключаться к рабочему столу Raspberry Pi, используя SSH, то читайте статью Как подключиться к VNC серверу Raspberry Pi через SSH туннель.
Можно подключиться к Raspberry Pi, используя имя домена, если настроен доступ через интернет. Например, когда Raspberry Pi установлен на даче. В строке Host Name вбейте название домена. Остальные настройки аналогичны. Не забудьте добавить public key в файл authorized_keys на Raspberry Pi. В роутере при настройке port forwarding (проброс портов) добавьте для Raspberry Pi порт 22 (SSH).
При подключении выдается окно:
Настройка доступа через интернет описана в статье Как получить доступ по интернету к датчикам в квартире.
В Linux всё намного проще. Пример сессии в Linux Mint:
Последнее исправление 5.10.2020
Использованные ресурсы:
wiki.diphost.ru/PuttyConfigKeys
lode.in/administration/generatsiya-ssh-klyuchej-s-putty-i-nastrojka-avtorizatsii-po-zakry-tomu-klyuchu-ssh.html
Шоттс У. Командная строка Linux. Полное руководство. — СПб.: Питер, 2017. — 480 с.
William E. Shotts The Linux command line, no starch press, San Francisco, 2012
|