Как стать автором
Обновить

Организация рабочей машины на Linux с удаленным доступом. Часть 1: Пепел(ац)

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров7.4K

Предисловие

Здравствуй, дорогой читатель!

Меня зовут Антон, я молодой инженер, который совсем недавно своими тонкими неокрепшими ручонками пробил стенку из кальцита, выбрался в неизведанный мир проводов и индийских драконов да со всего своего юношеского маху сиганул навстречу приключениям.
Мне предстоит узнать много нового и отстроить свое космическое судно… или, может, ноев ковчег? Нет, мне предстоит отстроить свою систему; систему, что я нареку именем d96. В процессе ее строительства, как подобает всякому капитану, я буду вести бортовой журнал.
Итак, запись #1…

Вступление

Началось все прозаично и просто: на работе пылился старенький ThinkPad без монитора на Core i3 и с восьмушкой оперативной памяти. Какое удивительное совпадение, но в то же самое время под 2 вкладки браузера у меня использовался более резвый жеребенок. Казалось бы, пущай и дальше гордый старец в мирном сне возвышается над бренностью нашего мира, только вот, по мотивам классических фэнтези, к седобородому пришел молодой кремнерожденный и, как водится, стал донимать.

В общем, и целом, и частности, решил я следующее: организовать рабочее пространство под те самые 2 вкладки на ThinkPad’ыше, доступ к которому будет осуществляться удаленно (напоминаю, монитор был ампутирован), а бодрого соколенка использовать под другие задачи (какие - покуда и сам не знаю).
Итак, цель - сымпровизировать машину под управлением Linux с удаленным доступом для рабочих задач.

Из жизни комет

Первым делом я достал из загашника vga-шный монитор и lan-шнурок, чтобы накатить систему. Да - загашник у меня квантово запутанный. Под мои задачи выбор пал на Ubuntu 22.04 LTS, по причине того, что я уже немного знаком с Ubuntu 24.04 LTS, и мне хотелось понять, как сильно отличается то, чем пользуюсь я, от иглы, на которой сидит мой преподаватель в университете. Но тогда я еще не знал, как сильно я ошибаюсь. Спойлер - не сильно. Просто современная Ubuntu использует для графической оболочки Wayland, а для удаленного доступа к окошкам я хотел использовать vnc, который работает с x11. Благо, интернет полнится мифами, поэтому направив запрос в космос: “Сервант на линух - это для меня”, я получил следующий манускрипт от парня, который решил мою задачу быстрее, умнее и давнее[1] - Ubuntu MATE 24.04 LTS[2]. Она построена на x11, графическая оболочка относительно много не жрет - что еще нужно для счастья (много чего, но для серванта под чайник и этого достаточно). Впоследствии окажется, что манипулировать окнами, аки профессиональный стекольщик, мне, по большому счету, вообще не нужно, ну да ладно, авось пригодится, есть пить не просит, просто ресурсы пожевывает. Светлые умы, конечно же, скажут про Ubuntu Server, куда при необходимости можно поставить GUI (Graphical User Interface). Ну и что вы мне сделаете? А? Я в другом городе, вообще!

С выбором системы разобрались. Далее мне нужен доступ по SSH, чтобы можно было удаленно подключиться к консоли; VNC-сервер, дабы получить доступ к монитору (я буду подключаться к физическому монитору, хоть его и нет, подобно фантомной конечности, наш ThinkPad’ышь все же его видит); раздать доступ к корневой папке, просто чтобы было (удобно); а еще поставить китёнышка (docker), который во чреве своем понесет ChirpStack (штука-дрюка для IoT на LoRaWAN). Далее - по делу: что, кого, как и куда вводить. Ну и tailscale - на сладкое (“из любой точки мира есть доступ”). Кстати, пункт с ssh можно пропустить, если десерт входит в ваши планы.

По делу

Вот, не обманул же - по делу. Ладно, все, не паясничаем…

  1. Установить Ubuntu MATE[2] (в моем случае - 24.04 LTS);

Далее - Ctrl+Alt+T - наши друзья, все в терминале.

  1. Установить SSH-server - для доступа по SSH:

	#(-y - yes  for all questions during installation)
	sudo apt install \-y openssh-server

	#Проверим, запущен ли сервер:
	sudo systemctl status ssh

В WinOS терминал, как и в Ubuntu, в коробку с системой бережно положен ssh-клиент, поэтому из обеих осей доступ к нашему ssh-серверу будет осуществляться просто:

	#Имя пользователя @ ip-адрес устройства и номер порта, 22 - золотой стандарт  
	ssh username@this.is.your.ip -p 22

Дабы вычислить “серверный” ip пропишем:

	hostname -I
  1. Установить vncserver - для удаленного доступа к GUI (xvnc - для физического дисплея / tigervnc - для виртуального дисплея; я воспользуюсь xvnc):

	sudo apt install x11vnc

	#Устанавливаем пароль; его нужно будет ввести следом за командой ниже:  
	11vnc -storepasswd

	#Запускаем vncserver c физическим дисплеем (-display :0), с использованием авторизации через сохраненный пароль ( -rfbauth ~/.vnc/passwd), не завершаем сессию после отключения клиента (-forever), разрешаем одновременное подключение (-shared), используем стандартный порт vnc (-rfbport 5900):  
	x11vnc -display :0 -rfbauth ~/.vnc/passwd -forever -shared -rfbport 5900  

На данном этапе я тестирую работоспособность, пытаясь подключиться с другого ПК средствами VNC-клиента (RealVNC Viewer - в моем случае). Для этого нужно находиться в одной локальной сети, знать ip-адрес ThinkPad’ыша и не забыть номер порта, который мы указали при запуске VNC-сервера (5900).

Создавая новое соединение в VNC-клиенте, нужно будет ввести, к примеру:

	192.168.80.178:5900

Затем заданный нами ранее пароль, ну и все - успех. По крайней мере, должен быть.
Далее добавим vnc’шку в автозапуск:

	#Откройте или создайте файл ~/.xprofile  
	sudo nano ~/.xprofile

Ах, да, nano - простой консольный текстовый редактор, самые важные сочетания клавиш для него на данном этапе - Ctrl+O - записать, Ctrl+X - закрыть.

	#Добавьте туда следующие строки:  
	if [ -n "$DISPLAY" ]; then  
		/usr/bin/x11vnc -display :0 -rfbauth /home/awmnb/.vnc/passwd -forever -shared -rfbport 5900 &  
	fi

	#Перезагрузите systemd, чтобы он распознал новый сервис  
	sudo systemctl daemon-reload

	#Включите автозапуск этого сервиса  
	sudo systemctl enable x11vnc.service
  1. Установить samba - для того, чтобы дать доступ к директориям нашего ThinkPad’ыша клиентам локальной сети:

(Я раздаю домашнюю папку, для всего остального есть SSH.)

	sudo apt install \-y samba  
	  
	# -a — ключ, который означает: добавить нового пользователя в базу Samba. username - имя пользователя Linux. Можно узнать, прописав:  
	whoami  

	sudo smbpasswd -a username

	sudo nano /etc/samba/smb.conf

	#В конец файла, который был открыт командой выше, необходимо прописать блок:  
	[username-home]  
	path = /home/username  
	browseable = yes  
	read only = no  
	guest ok = no  
	valid users = username

	#перезагрузить службу с новым конфигом  
	sudo systemctl restart smbd

	#добавить в автозагрузку  
	sudo systemctl enable smbd

	#проверить статус автозагрузки  
	sudo systemctl is-enabled smbd

После выполнения вышеописанных операций на второй машине под управлением Ubuntu, находящейся в моей юрисдикции, сетевой диск обнаружился автоматически. Если магическим образом на пингвине ничего не заработало, следует использовать практический - заходим в проводник, “+ Other Locations” - “Enter Server Address…”

	smb://this.is.your.ip/username-home

	#Либо в терминале:  
	nautilus smb://this.is.your.ip/username-home

Для доступа к расшаренной папке с WinOS необходимо в проводнике перейти по следующему адресу:

	\\this.is.your.ip\\username-home  
	#username-home - был назван добавленный в конфиг-файл samba блок

Чтобы не запоминать путь, я предпочел выдать ThinkPad’ышу статический ip и подключить сетевой диск в Win:

RMC on This PC in explorer -> Map Network Drive -> …

  1. Настройка автоматической авторизации пользователя при старте системы.

(Напомню, что дисплей нашего старца выпал, с криком: "Ну чё, ра-народ? Погнали...", а после перезапуска системы без авторизации ни одна из столь кропотливо установленных нами служб предательски не запустится…)

	#Открыть файл конфигурации LightDM:  
	sudo nano /etc/lightdm/lightdm.conf

	#Добавить или раскомментировать строки:  
	[SeatDefaults]  
	autologin-user=awmnb  
	autologin-user-timeout=0
  1. Установить tailscale[3] - что-то вроде личной VPN-сети для автоматического объединения устройств в локалку без проброса портов, белых айпишников и шаманских плясок.

На сайте tailscale[4] есть построчный мануал с актуальными версиями под самые разные системы, здесь же будут продублированы команды для знакомства с этим компанейским парнягой на Ubuntu (MATE) 24.04 LTS (noble):

	#Добавим gpg-ключ:  
	curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null

Если на данном этапе наш титаник мчится на полном ходу к айсбергу с кодовым именем 451, а мы, напялив на глаза блюдца, видим в терминале следующее:

	curl: (22) The requested URL returned error: 451

… крепитесь, подкрепитесь и вернитесь к делу. Из вашей точки мира доступ к вводимым нами ссылкам отсутствует. На этот случай у меня спрятан OpenVPN в рукаве. Ну, небось, не маленькие.

	#Добавим репозиторий:  
	curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list

	#Установим tailscale:  
	sudo apt-get update  
	sudo apt-get install tailscale

	#Подключимся к сети tailscale:  
	sudo tailscale up

На этом этапе нас сошлют по ссылочке, а нам и деваться некуда, и авторизоваться надобно, посему - пройдем. Не убудет же... К созданному аккаунту будет привязана наша удаленная локальная сеть.

	#Узнаем наш ip в созданной сети, а заодно и ip прочих подключенных устройств:  
	tailscale ip -4  
	tailscale status

При установке данным способом, программа будет стартовать с системой; с snap-пакетом могут быть проблемы где-то между Новокузнецком и автозапуском. Во-о-от...

Можно еще поднять ssh от tailscale при желании:

	sudo tailscale up --ssh

Говорят, никаких паролей для завсегдатаев вашего паба.

“Вот и все. Ну и что?”

Ну а дальше - импровизируем как можем. Я, например, бережно положил нашего красноглазого циклопыша на полку, поближе к роутеру, воткнул в него питание, LAN и оставил мирно бухтеть куллером на благо рабочего класса.
Ну… разве что развернул Docker, в коем запустил ChirpStack, дабы транзисторам щелкалось с пользой.
Но это уже совсем другая история…

Ссылки:

  1. Домашний сервер на Ubuntu 22.04 LTS. Часть 1: покупка, настройка, старт — Блог Аксенова

  2. Ubuntu MATE 24.04 LTS Noble Numbat

  3. Install Tailscale on Ubuntu 24.04 (noble)

  4. Tailscale - Download

Теги:
Хабы:
+1
Комментарии24

Публикации

Ближайшие события