Начальная настройка без монитора или клавиатуры

10

Подобный вопрос уже задавался ранее: Как настроить Raspberry Pi без монитора?

Однако, учитывая, что принятый ответ, по-видимому, не предлагает подходящего решения, и учитывая, что существует некоторая неопределенность в том, что спрашивалось, я предполагаю, что исходный вопрос был неправильно составлен, и что мой вопрос не ' Точная копия.

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

Я установил статический IP-адрес на Pi, отредактировав cmdline.txtфайл. (Пи запускает последнюю версию Raspbian.)

ip=10.0.0.20

Я назначил ethинтерфейсу на моем ноутбуке соответствующий статический IP-адрес. (Ноутбук работает под управлением Ubuntu.)

ip ad add 10.0.0.10/24 dev eth0

Я соединил их вместе с помощью кабеля Ethernet и могу успешно пропинговать Pi с моего ноутбука.

Что я не могу сделать, так это sshс Пи. Я получаю ответ об отказе в соединении :

richard@richard-ThinkPad-X220:~$ ssh -vvv pi@10.0.0.20
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 10.0.0.20 [10.0.0.20] port 22.
debug1: connect to address 10.0.0.20 port 22: Connection refused
ssh: connect to host 10.0.0.20 port 22: Connection refused

Одна вещь, которую это подразумевало бы, - то, что sshdеще не работает на Пи.

Официальные документы утверждают , что sshdзапускается по умолчанию, но это возможно , что во время начальной загрузки , что и другие вещи (например , подсказки , ожидающие ввода данных пользователем) может блокировать загрузку на определенном уровне, то есть мы не достигнем точки , в которой sshdначалось это ?

Куда мне идти отсюда? (Не "в магазины, чтобы купить монитор" ...)

Что я пытаюсь на самом деле возможно?

Редактировать:

Сейчас я попробовал методы, упомянутые в ответах на следующий пост, но безуспешно: Включение SSH на RPi без экрана - нажатия клавиш для raspi-config?

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

Ричард Хоррокс
источник
Предполагая, что вы пингуете Pi, и он запускает недавний Raspbian, тогда он должен работать. Единственная альтернатива, которую я могу предложить, - это войти через UART на контакты 8 и 10. Для этого нужны провода и последовательный USB-ключ, совместимый с 3V3.
Джоан
Установка статических адресов только усложняет проблему. Если вы не возились с этим, вы должны иметь возможность связаться с ssh pi@raspberrypi.localвами. Кажется, вы не думаете, sshважно ли нам сказать, как вы на самом деле пытаетесь это сделать .
Milliways
Я попытался удалить статический IP-адрес из конфигурации Pi, и попытался ping pi@raspberrypi.local. Но это не работает, потому что raspberrypi.localэто неизвестный хост. Разве ему не понадобится запись /etc/hostsна моем ноутбуке, чтобы можно было ее решить?
Ричард Хоррокс
Дайте мне знать, какие дополнительные сведения о том, как я могу предоставить SSH, и я с радостью предоставлю их - извинения, если что-то пропало. Спасибо за предложения до сих пор :)
Ричард Хоррокс
1
Вы можете запустить sudo nmap 10.0.0.20на ноутбуке. Если он показывает, что порт 22 открыт, значит, SSH работает, иначе он не работает. Это не исправит это, но скажет вам, что происходит.
garethTheRed

Ответы:

5

Официальные документы утверждают, что sshd запускается по умолчанию

На моем последнем изображении 2015-11-21-raspbian-jessie- lite .img это не так. Debian / Raspbian jessie в настоящее время использует systemd для инициализации, но в нее встроен своего рода гибридный обратно-SysV-совместимый механизм, и я замечаю, что на работающей системе, которую я создал из этого образа (используя экран и клавиатуру для начальной настройки), там, где теперь включен sshd, есть триггер как в systemd, так и в старых rc.dкаталогах SysV . Предположительно, так работает механизм обратной совместимости (я включил ssh через systemd). В любом случае, работает только один sshdэкземпляр с PPID 1.

Для работающей системы есть запись /etc/rc[2,3,4,5].dдля S02ssh(точный номер приоритета 02 устанавливается при включении услуги и может изменяться). Существует также /etc/systemd/system/multi-user.target.wants/ssh.service.

На базовом изображении, однако ...

... Здесь нет записи /etc/systemdи есть K01sshуровни запуска 2, 3, 4, 5. Это в значительной степени гарантирует, что sshd не запущен.

Я предлагаю сначала попробовать установить только запись SysV. Из etcкаталога второго раздела на SD-карте:

for i in 2 3 4 5; do \
ln -s ../init.d/ssh rc$i.d/S02ssh; \
rm rc$i.d/K01ssh \
done

Убедитесь, что ссылки есть и они указывают на нужное место с помощью stat. Я считаю, что этого должно быть достаточно, и теперь вы можете попробовать загрузить систему. Если это так, после того как вы удалите эти ссылки и запустите их systemctl enable ssh, проверьте, что ссылки были воссозданы (помните, приоритет может быть другим).

Если вы по-прежнему получаете сообщение «Отказано в соединении», создайте ссылку [SD_rootfs]/lib/systemd/system/ssh.serviceна [SD_rootfs]/etc/systemd/default.target.wants/ssh.serviceи повторите попытку.

Златовласка
источник
Спасибо за очень подробные инструкции. Я заметил K01sshв rc2.dкаталоге и переименовал его, но не заметил других в других rcкаталогах. К сожалению, удаление тех, кто использует ваш скрипт, не помогло. (Я проверил, что они были созданы, как вы предложили.) Для второго метода у меня нет ssh.serviceзаписи в etc/systemd/system/multi-user.target.wants/каталоге, и lib/systemd/system/каталог не доступен. Система даже не может сказать, что это каталог (и при запуске fileвыдает: ERROR: cannot open lib / systemd / system '(Ошибка ввода / вывода) `).
Ричард Хоррокс
Обратите внимание, что я не использую изображение Lite, но полное изображение той же даты, что и вы.
Ричард Хоррокс
Посмотрите на каталоги init, упомянутые выше на карте. Вы должны быть в состоянии сказать, включен ли ssh или нет. Если это так, исправьте IP + ssh running! = "Отказано в соединении", так что где-то что-то пошло не так, и вам придется найти экран и клавиатуру для диагностики. В качестве альтернативы (или также) вы можете использовать что-то вроде wireshark, чтобы увидеть, какие пакеты идут туда-сюда; это определенно докажет, что происходит в сети.
Златовласка
Ладно, возился с Wireshark, но никуда не деться. Затем решил записать изображение Lite и попробовать это. Я заметил, что systemdфайлы, которые вы упомянули, присутствовали, поэтому попытался сделать второе предложение, которое сработало :) Не уверен, почему между изображениями все по-другому, но это мог быть мой взлом, который повлиял на что-то на первом изображении. (Понятия не имею, что ...) Большое спасибо за вашу помощь.
Ричард Хоррокс
Ради полноты я попытался еще раз с новым жирным изображением Джесси, записанным на другую SD-карту, но снова lib/systemd/system/каталог был недоступен. То же самое касается изображения Wheezy. Только изображение Lite позволило мне получить доступ к каталогу и, следовательно, выполнить инструкции.
Ричард Хоррокс
11

Для тех из вас, кто столкнулся с этим с более новыми образами Raspbian: есть sshwitchцель systemd, которая проверяет /boot/ssh, и, если этот файл присутствует, она регенерирует ключи хоста SSH и включает сервер SSH.

Итак, чтобы включить SSH, просто добавьте файл, называемый sshв корне загрузочного раздела (FAT, с bootcode.binфайлом), и загрузите свой Pi!

Изменить: это сработало на моем изображении 2017-01-11-raspbian-jessie-lite.

Штеффан Каргер
источник
Это хорошо работает. Если у вас есть удобная клавиатура, введите: pi <enter> raspberry <enter> sudo touch / boot / ssh <enter> sudo reboot <enter>, затем посмотрите, как маршрутизатор получает IP-адрес устройства, затем ssh pi @ <thatip> и вы будете чувствовать себя как хакер
Нуреттин
1

Извините за то, что это ответ, но не достаточно, чтобы просто комментировать.

Работает ли ssh? Если это возможно, и это один из установочных образов raspberry, попробуйте raspi-config просто для включения ssh.

Другой способ, проверьте, если ssh загружен и включен

sudo service --status-all|grep ssh

Может быть, порт SSH 22 отклоняет соединение, потому что служба не готова

Иисус Сепеда
источник
1
На текущих версиях raspbian вы, вероятно, захотите использовать systemctl --list-units | grep ssh(или, что еще лучше, более информативный systemctl status ssh). Но вы, по сути, правы: «Отказ в соединении» означает, что на порте ничего не прослушивается. Если ssh запущен, значит, IP неверен.
Златовласка
2
Спасибо за ответ. Проблема с вашим предложением заключается в том, что у меня нет способа запустить команду, потому что я не могу получить доступ к Pi, чтобы запустить ее. Цыпленок и яйцо. :( Я знаю, что IP-адрес правильный, потому что я могу пропинговать его (и я не знаю ничего другого в сети с таким же адресом).
Ричард Хоррокс
1

https://www.raspberrypi.org/blog/a-security-update-for-raspbian-pixel/ Эта ссылка для операционной системы версии Rasbian PIXEL.

Джордж
источник
Это действительно, кажется, не отвечает на вопрос в любом случае.
Jacobm001
Хотя полезная информация содержится только в ссылке (а не в ответном ответе, где она должна быть), это по крайней мере официальная документация raspberrypi.org и раздел «Что изменилось?» на связанной странице отключаются проблемы безопасности, которые привели к необходимым изменениям (т. е. отключение ssh по умолчанию), и подробности /boot/sshисправления.
Роберто Тайли
0

В версии Jessie lite от 26 февраля 2016 года ssh включен по умолчанию.

Ромилли Кокс
источник