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


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исправления.
— Роберто Тайли

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.