Я пытаюсь настроить Ubuntu ISO с помощью Cubic для запуска пары сценариев оболочки, когда пользователь Live входит в систему. Я следил за кучей руководств с множеством инструкций, и в конечном итоге у меня в какой-то момент они заработали. К сожалению, я не могу воссоздать настройку и, что еще хуже, я удалил конкретный ISO, думая, что он мне не понадобится. До сих пор я переместил свои сценарии оболочки в каталог / etc / skel через среду chroot в Cubic и изменил crontab, добавив команду @reboot. После этого я позволил Cubic создать мой ISO и записал его на USB. Я загрузил его, но понял, что скрипты не были выполнены. Я проверил домашний каталог (поскольку там должно находиться содержимое / etc / skel) и все мои скрипты присутствовали. Как я могу заставить это работать?
Вместо использования chron
можно использовать сценарий автозапуска для подключения к удаленному компьютеру.
Необходимо настроить проверку подлинности на основе ключей на удаленном компьютере, чтобы не требовалось никакого взаимодействия с пользователем.
В приведенных ниже инструкциях при необходимости замените следующие значения.
LOCAL
- IP-адрес или имя хоста вашего локального компьютера (где вы используете Cubic)REMOTE
- IP-адрес или имя хоста удаленного компьютераn00dles
- имя пользователя на локальном компьютере и/или удаленном компьютереREMOTE_LOCATION_PATH
- путь к каталогу, который вы хотите смонтировать на удаленном компьютереСгенерировать открытые и закрытые ключи для вашего локального компьютера.
Эти ключи будут использоваться в пользовательском ISO- файле. Помните о последствиях для безопасности. Любой, кто получит доступ к вашему настроенному USB, сможет войти в систему на вашем удаленном компьютере.
Выполните следующие команды на локальном компьютере (например, не в Cubic).
кд ~
ssh-keygen -т РСА
Примите значения по умолчанию. Вывод будет выглядеть примерно так.
Генерация пары ключей public/private rsa.
Введите файл, в котором нужно сохранить ключ (/home/n00dles/.ssh/id_rsa):
Введите парольную фразу (пусто для без парольной фразы):
Введите ту же парольную фразу еще раз:
Ваша идентификация была сохранена в /home/n00dles/.ssh/id_rsa
Ваш открытый ключ сохранен в /home/n00dles/.ssh/id_rsa.pub
Ключевой отпечаток пальца:
SHA256:G48dcTOXpUhzWxuzwn8pgdOTP9WmlLtXBCJkkiSEywk n00dles@LOCAL
Случайное изображение ключа:
+---[RSA 3072]----+
| xxxxxx x xxx|
| x x xxxxxxxxxx|
| x x xxxxxxx|
| x xxxxxx|
| x x x xxxx|
| x x xxx|
| x x x x x|
| х |
| х |
+----[SHA256]-----+
Настройка удаленного входа в систему.
Скопируйте открытый ключ на удаленный компьютер. Помните о последствиях для безопасности. Это позволит удаленно подключаться с любого компьютера с помощью соответствующего закрытого ключа.
ssh-copy-id -i .ssh/id_rsa.паб user@host
Создайте новый файл known_hosts
, который будет скопирован в настроенный ISO-образ. Это позволит среде Live подключаться к удаленному компьютеру без запроса подтверждения пользователя.
Временно создайте резервную копию текущего файла known_hosts
. Не забудьте при необходимости заменить n00dles@REMOTE
и REMOTE_LOCATION_PATH
.
mv ~/.ssh/known_hosts ~/.ssh/known_hosts.original
# Войдите на удаленный компьютер, чтобы автоматически создать новый файл 'known_hosts'.
sudo mkdir /mnt/remote
sshfs n00dles@REMOTE.local:/REMOTE_LOCATION_PATH/ /mnt/remote/
Отпечаток ключа ECDSA — SHA256:XXXX.
Вы уверены, что хотите продолжить подключение (да/нет/[отпечаток пальца])? да
# Размонтируйте удаленный компьютер.
fusermount -u /mnt/remote
sudo rmdir /mnt/remote
# Сохраните новый файл known_hosts.
mv ~/.ssh/known_hosts ~/
# Возврат исходного файла known_hosts.
mv ~/.ssh/known_hosts.original ~/.ssh/known_hosts
Настройте ISO с помощью Cubic.
Запустите Cubic и выполните следующие действия на странице Терминал.
Убедитесь, что установлен sshfs
, чтобы мы могли подключаться к удаленным машинам.
APT установка sshfs
Скопируйте ключи и новый файл known_hosts
в пользовательскую ОС.
cd /etc/skel
mkdir .ssh
chmod u=rwx,g=,o= .ssh
cd .ssh
Откройте файловый браузер, например Nautilus, и перейдите в локальный каталог ~/.ssh
.
Выберите id_rsa
и id_rsa.pub
и перетащите их в окно Cubic, чтобы скопировать их в текущий каталог,/etc/skel.ssh
.
Откройте файловый браузер, например Nautilus, и перейдите в домашний каталог.
Выберите новый файл known_hosts
и перетащите его в окно Cubic, чтобы скопировать в текущий каталог,/etc/skel/.ssh
.
Убедитесь, что для этих файлов правильно установлены разрешения; это очень важно. В Cubic выполните следующее:
chmod u=rw,g=,o= id_rsa
chmod u=rw,g=r,o=r id_rsa.pub
chmod u=rw,g=r,o=r known_hosts
ls -la
-rw------- 1 корень 2602 7 июня 09:35 id_rsa
-rw-r--r-- 1 корень корня 566 июня 7 09:35 id_rsa.pub
-rw-r--r-- 1 корень корня 222 июня 7 09:35 known_hosts
Создайте точку монтирования для удаленного расположения, убедитесь, что она может использоваться всеми пользователями, и добавьте ссылку с именем Remote
в домашний каталог каждого пользователя.
mkdir /mnt/удаленный
chmod a+rw /mnt/remote
ln -s /mnt/remote /etc/skel/Remote
Создайте сценарий для подключения удаленного расположения.
нано /опт/mount_remote.sh
Добавьте в сценарий следующее. Не забудьте при необходимости заменить n00dles@REMOTE
и REMOTE_LOCATION_PATH
.
#!/bin/bash
# Монтирует удаленное местоположение.
# Для монтирования: sshfs n00dles@REMOTE.local:/REMOTE_LOCATION_PATH/ /mnt/remote
# Для размонтирования использования: fusermount -u /mnt/remote
for i in {1..5}; делать
если точка монтирования /mnt/remote; тогда
echo "n00dles@REMOTE.local:/REMOTE_LOCATION_PATH смонтирован."
ломать
еще
# Попытка подключить удаленное местоположение к /mnt/remote
echo "Попытка # $i для монтирования n00dles@REMOTE.local:/REMOTE_LOCATION_PATH."
$i сна
SSHFS n00dles@REMOTE.local:/REMOTE_LOCATION_PATH/ /mnt/remote
fi
Договорились
если точка монтирования /mnt/remote; тогда
echo "Успешно смонтирован n00dles@REMOTE.local:/REMOTE_LOCATION_PATH."
еще
echo "Не удается смонтировать n00dles@REMOTE.local:/REMOTE_LOCATION_PATH."
fi
Введите CTRLX, Y, Enter, чтобы сохранить файл.
При необходимости в сценарии можно использовать переменные среды, такие как $HOME
.
Сделайте скрипт исполняемым.
chmod +x /opt/mount_remote.sh
Создайте файл автозапуска, который будет запускаться для каждого пользователя после входа в систему.
нано ~/mount_remote.рабочий стол
Для XUbuntu 20.04+ или более ранних версий Ubuntu добавьте в файл следующее.
[Запись на рабочем столе]
Кодировка=UTF-8
Версия=0.9.4
Тип=Приложение
Имя=mount_remote
Comment=Монтировать удаленное местоположение
Exec=/opt/mount_remote.sh
OnlyShowIn=XFCE;
RunHook=0
StartupNotify=false
Терминал=false
Скрыто=ложь
Для Ubuntu 20.04+ добавьте в файл следующее.
[Запись на рабочем столе]
Тип=Приложение
Exec=/opt/mount_remote.sh
Скрыто=ложь
NoDisplay=false
X-GNOME-Autostart-enabled=true
Имя[en_US]=Mount Remote
Name=Mount Remote
Комментарий[en_US]=Монтировать удаленное местоположение
Comment=Монтировать удаленное местоположение
Для сохранения файла введите CTRLX, Y, Enter.
Вы можете добавить Terminal=true
в файл *.desktop
для отладки, но удаленное местоположение будет немедленно отключено после автоматического закрытия окна терминала.
Переместите файл автозапуска в правильное расположение. У вас есть два варианта.
Если вы хотите использовать глобальный файл автозапуска, переместите его в /etc/xdg/autostart
.
mv ~/mount_remote.рабочий стол /etc/xdg/автозапуск
Если вы хотите, чтобы у каждого пользователя была своя копия файла автозапуска, переместите его в /etc/skel/.config/autostart
. (Пользователи смогут удалить этот файл, потому что он будет помещен в их домашнюю папку).
mkdir -p /etc/skel/.config/autostart
mv ~/mount_remote.desktop /etc/skel/.config/autostart
Продолжайте настраивать ОС и создавайте новый ISO.
Testing
Если вместо IP-адреса используется имя удаленного узла, при тестировании сгенерированного ISO-образа убедитесь, что разрешение DNS работает. В VirtualBox я обычно настраиваю сеть на использование «Адаптер моста» вместо адаптера «NAT» по умолчанию.