Шпора по Линуху
Затосковал в macos, пробую периодическими набегами вернуться на Linux. То в виртуальной машине его поставлю, то вторым бортом. О, сколько снова вопросов, поисков и... иногда даже решений. Это моя записная книжка чтобы решения эти не растерять.
Подключение к рабочей сети по VPN
Мне важно чтобы я мог работать удаленно. Не то чтобы это было моё основное занятие, просто иногда в выходной проще подключиться и сделать, чем долго объяснять в трубку на пальцах да по памяти что надо увидеть и где нажать чтобы возможно исправить нетиповую ситуацию.
На работе у меня конечно же Виндоза, дома есть подопытный Линукс с сороковым Ґномом. Мне выданы ключи от туннеля ви-пи-эн (сертификат ca.crt
, файл конфигурации work.ovpn
и логин с паролем).
Первым делом создаю скрытую папку .cert
и сохраняю в нее полученные сертификат с файлом конфигурации туннеля.
$ mkdir ~/.cert
$ mv ca.crt ~/.cert
$ mv work.ovpn ~/.cert
Теперь создаю новое VPN-соединение импортируя OVPN файл. В окне Параметры (Ґнома), перехожу в Сеть > VPN > Добавить. Выбираю Импортировать из файла... Здесь предлагаю сохраненный только что файл конфигурации work.ovpn
.
В открывшемся окне уже открыта вкладка Идентификация. Меняю поле Название на название организации куда ведет этот туннель. Заношу выданные Имя пользователя и Пароль. Убеждаюсь, что в поле Сертификат CA уже лежит ca.crt
. Если файл конфигурации и сертификат сложены в разных местах, потребуется самостоятельно указать местоположение Сертификата CA.
Чтобы компьютер при подключении к ви-пи-эн не пытался использовать ресурсы удаленной рабочей сети для обращений к интернету (моя личная почта, браузер и т. п.) на вкладках IPv4 и IPv6 включаю галочку Использовать это подключение только для ресурсов в этой сети. Жму Применить.
Если что-то идет не так, возможно не установлен пакет
networkmanager-openvpn
. После установки надо перезапустить менеджерsudo systemctl restart networkmanager
и попробовать импорт еще раз.Или вот. Как-то раз знакомился с Федорой, получил ошибку Activation of network connection failed решилось предоставлением для OpenVPN доступа с помощью
restorecon -R -v ~/.cert
.
Теперь можно включать и выключать VPN прямо в системном меню Ґнома.
Подключение к удаленному рабочему столу
В качестве клиента для удаленного рабочего стола я какое-то время пользовался программой Remmina. Если её не было в только что установленном дистрибутиве, сразу же ставил — здесь главное было не забыть в довесок выбрать пакет freerdp.
Сейчас я поставил Манжаро Линукс на Макбук с Ретина-экраном и столкнулся с проблемой, что при работе Реммины на машине с экраном HiDPI по удаленному рабочему столу будет медленно ползать очень маленький курсор. Реально маленький, его едва видно.
Никак не смог побороть эту проблему. При этом она точно решаема. Поставь на тот же Макбук Убунту — все из коробки работает. Если знаете как решить проблему маленького курсора в других дистрибутивах, буду рад, если поделитесь в комментариях.
Зато узнал, что упомянутый выше пакет Фри-эр-дэ-пэ может и сам по себе работать, без Реммины. При этом можно настроить буквально всё! Одна неприятность, эта программа запускается из терминала с перечислением длинного хвоста параметров.
Настройка удобного запуска FreeRDP
Сделаю графическое меню с перечнем удаленных рабочих столов запускаемое комбинацией клавиш. Будет три скрипта: один рисующий меню выбора и еще по одному скрипту, каждый на запуск своего удаленного рабочего стола. Положу их в отдельно созданную по случаю скрытую папку .go-work
. Дополнительно, в папке Документы
создам общую папку РаботаVPN
для подключения к удаленному компьютеру в качестве внешнего, сетевого диска (для обмена файлами).
$ mkdir -p ~/Документы/РаботаVPN
$ mkdir ~/.go-work
$ cd ~/.go-work
Начну с рабочих столов. Создаю файл скрипта xfreerdp-workbench1.sh
, делаю его запускаемым и открываю в редакторе.
$ touch xfreerdp-workbench1.sh
$ chmod +x xfreerdp-workbench1.sh
$ gedit xfreerdp-workbench1.sh
Скрипт {выделенное надо заменить} такой:
#!/bin/sh
# Так как хочу использовать общий буфер обмена
# на всякий случай удалю сначала то что в нем лежит.
# Для этого заполню буфер незначительной информацией,
# например, временем работы uptime.
# Запускаю xfreerdp только если не возникло ошибки.
uptime | xclip -sel clip && xfreerdp \
/f `# режим полного экрана` \
/bpp:32 `# цвет в битах на пиксель, по умолчанию - 16` \
/drive:Home,$HOME/Документы/РаботаVPN \
/cert-ignore `# принимать самоподписанный сертификат` \
/d:{DOMAIN} `# название домена в удаленной рабочей сети` \
/u:{user-name} `# имя пользователя на удаленном домене` \
/p:{pA$$w*rd} `# пароль пользователя на удаленном домене` \
/v:{XXX.XXX.XXX.XXX} `# IP адрес в удаленной рабочей сети` \
/kbd:0x10419 `# 0x419 для Ru, 0x10419 для Ru(Typewriter)` \
/w:1280 /h:800 `# размер экрана для удаленной машины` \
/size:50% /smart-sizing `# 50% так как здесь экран HiDPI` \
-grab-keyboard `# не захватывать клавиатуру` \
+auto-reconnect `# восстанавливать обрывы связи` \
+clipboard `# разрешить общий буфер обмена` \
+fonts `# сглаживание шрифтов может замедлять работу` \
# +aero `# проверить как-нибудь`
# Последнее возможно полезно для Windows 7+ по RemoteFX
Теперь файл скрипта для второго удаленного рабочего стола xfreerdp-workbench2.sh
.
$ touch xfreerdp-workbench2.sh
$ chmod +x xfreerdp-workbench2.sh
$ gedit xfreerdp-workbench2.sh
Для этой машины не подключаю принтер, общую папку и буфер обмена. Поэтому скприпт короче:
#!/bin/sh
# Здесь мне общий буфер обмена не нужен,
# поэтому просто запускаю xfreerdp.
xfreerdp \
/f `# режим полного экрана` \
/bpp:32 `# цвет в битах на пиксель, по умолчанию — 16` \
/cert-ignore `# принимать самоподписанный сертификат` \
/d:{DOMAIN} `# название домена в удаленной рабочей сети` \
/u:{user-name} `# имя пользователя на удаленном домене` \
/p:{pA$$w*rd} `# пароль пользователя на удаленном домене` \
/v:{YYY.YYY.YYY.YYY} `# IP адрес в удаленной рабочей сети` \
/kbd:0x10419 `# 0x10419 для Ru(Typewriter), 0x419 для Ru` \
/w:1280 /h:800 `# размер экрана для удаленной машины` \
/size:50% /smart-sizing `# 50% так как здесь экран HiDPI` \
-grab-keyboard `# не захватывать клавиатуру` \
+auto-reconnect `# восстанавливать обрывы связи` \
+fonts `# сглаживание шрифтов может замедлять работу` \
Ну и на последок — файл скрипта для меню выбора удаленной машины.
$ touch choose-machine.sh
$ chmod +x choose-machine.sh
$ gedit choose-machine.sh
Меню делаю на программе Zenity
#!/bin/sh
WORKBENCH=$(zenity --list \
--title "Выбери рабочее место" \
--text "Не забудь подключить ⚡️ VPN ⚡️" \
--radiolist --column "🖥️" --column "Сервер" \
TRUE "Верстак 1" \
FALSE "Верстак 2")
if [ "$WORKBENCH" = "Верстак 1" ]
then
sh ~/.go-work/xfreerdp-workbench1.sh;
fi
if [ "$WORKBENCH" = "Верстак 2" ]
then
sh ~/.go-work/xfreerdp-workbench2.sh;
fi
Всё готово. Осталось выбрать подходящую комбинацию клавиш и повесить на неё скрипт с меню.
Открываю Параметры (Ґнома), перехожу в Клавиатура > Комбинации клавиш > Настроить комбинации. Выбираю Дополнительные комбинации клавиш > Добавить. Заполняю команду ~/.go-work/choose-machine.sh
, комбинация [Shift] + [Super] + [G]. Называю комбинацию «На работу!», жму Добавить.
Включаю VPN в главном меню Ґнома, жму Shift+Super+G
В тексте окна я для себя оставил напоминалку включить сначала VPN. Если знаете как проверить его состояние и запустить в скрипте, напишите в комментариях — буду рад обновить свой скрипт меню.
Внес пару правок в скрипт запуска freerdp. Во первых, убрал из скрипта пароль домена в открытом виде — теперь с помощью того же zenity спрашиваю пароль при каждом запуске (см. блок начинающийся с /p:
). Во вторых, добавил явное указание использовать протокол rdp (строка /sec:rdp
).
Обновленный скрипт теперь выглядит так:
#!/bin/sh
# Так как хочу использовать общий буфер обмена
# на всякий случай удалю сначала то что в нем лежит.
# Для этого заполню буфер незначительной информацией,
# например, временем работы uptime.
# Запускаю xfreerdp только если не возникло ошибки.
uptime | xclip -sel clip && xfreerdp \
/f `# режим полного экрана` \
/bpp:32 `# цвет в битах на пиксель, по умолчанию - 16` \
/drive:Home,$HOME/Документы/РаботаVPN \
/cert-ignore `# принимать самоподписанный сертификат` \
/sec:rdp `# настоять на протоколе rdp` \
/v:{XXX.XXX.XXX.XXX} `# IP адрес в удаленной рабочей сети` \
/d:{DOMAIN} `# название домена в удаленной рабочей сети` \
/u:{user-name} `# имя пользователя на удаленном домене` \
/p:$(zenity --entry `# запрос пароля внешним приложением` \
--title="Пароль домена" \
--text="Введите свой пароль" \
--hide-text) `# пароль вводится — прятать символы` \
/kbd:0x10419 `# 0x419 для Ru, 0x10419 для Ru(Typewriter)` \
/w:1280 /h:800 `# размер экрана для удаленной машины` \
/size:50% /smart-sizing `# 50% так как здесь экран HiDPI` \
-grab-keyboard `# не захватывать клавиатуру` \
+auto-reconnect `# восстанавливать обрывы связи` \
+clipboard `# разрешить общий буфер обмена` \
+fonts `# сглаживание шрифтов может замедлять работу`
Комментарии