Я хочу установить Ubuntu Server 20.04 на Rpi 4 без монитора, поэтому мне нужно заранее настроить SSH, отредактировав user-data
файл в папке system-boot
.
Можно ли настроить SSH для пользователя: установить открытый ключ и отключить пароль по умолчанию перед первым входом в мой Pi?
Я нашел одно руководство здесь , но нет информации о том, как правильно настроить SSH в файле uaer-data
:
chpasswd:
expire: true
list:
- ubuntu:ubuntu
Мне нужна помощь, так как, к сожалению, я не могу найти исчерпывающий пример для этой цели. Но есть несколько примеров облачной конфигурации для виртуального бокса ( 1 , 2 ), поэтому я не знаю, подходит ли это для моего случая.
users:
- default
- name: ubuntu
ssh-authorized-keys:
- <your user public key here>
sudo: ALL=(ALL) NOPASSWD:ALL
groups: sudo
shell: /bin/bash
Ребята, после нескольких попыток установки Ubuntu без монитора (игра с черным ящиком) необходимая конфигурация была успешно выполнена.
Мой файл пользовательских данных
:
users:
- default
- name: ubuntu
sudo: ALL=(ALL) NOPASSWD:ALL
groups: sudo, users, admin
lock_passwd: true
ssh_pwauth: True
ssh_import_id: None
ssh_authorized_keys:
- <your user public key here>
#chpasswd:
# expire: true
# list:
# - ubuntu:ubuntu
#ssh_pwauth: true
Обратите внимание, что по умолчанию chpasswd
и ssh_pwauth
закомментированы, а ssh_authorized_keys
записаны с подчеркиванием, в отличие от многих примеров.
Итак, вам нужно сгенерировать SSH-ключ на вашем компьютере и добавьте его в список ssh_authorized_keys
, вот и все. Никаких подергиваний после первого подключения не требуется.
Вот один способ:
Для большинства пользователей НАМНОГО проще войти в систему в первый раз, используя временный пользователь / пароль «ubuntu», а затем настроить своего постоянного администратора.
// Set the timezone non-interactively
sudo ln -fs /usr/share/zoneinfo/<pick_a_timezone> /etc/localtime
sudo dpkg-reconfigure -f noninteractive tzdata
//Change the hostname
sudo hostnamectl set-hostname <new_hostname>
// You must create a new (admin) password during this step. Don't forget it.
adduser <user_name>
adduser <user_name> sudo
local:~$ ssh-copy-id <user_name>@<pi_ip_address>
local:~$ ssh <user_name>@<pi_ip_address>
// Edit the ssh settings to disable password-based access
sudo nano /etc/ssh/sshd.config
PermitRootLogin no
PasswordAuthentication no
// Reload the sshd config.
sudo systemctl restart sshd
// Delete the 'Ubuntu' user
sudo deluser ubuntu --remove-home
... и теперь вы все настроены с помощью уникального входа в систему SSH на основе ключа.