OpenBSD на рабочей станции: различия между версиями
Ssh (обсуждение | вклад) |
Ssh (обсуждение | вклад) |
||
(не показана 51 промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
− | Вольный перевод статьи [http://eradman.com Eric Radman] [http://eradman.com/posts/openbsd-workstation.html An OpenBSD Workstation]. | + | Вольный перевод статьи [http://eradman.com Eric Radman] [http://eradman.com/posts/openbsd-workstation.html An OpenBSD Workstation] с некоторыми дополнениями учитывающими изменения пришедшие в свежих релизах. |
− | == | + | == Выключение системы нажатием на кнопку питания == |
− | + | Безопасное выключение компьютера нажатием на кнопку питания возможно после передачи ядру параметра: | |
+ | <pre># /etc/sysctl.conf | ||
+ | hw.allowpowerdown=1</pre> | ||
+ | Параметр может быть установлен только до перехода системы к уровню безопасности 1, подробнее в [http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man7/securelevel.7?query=securelevel securelevel(7)]. | ||
− | + | == Больше никаких раздражающих сигналов == | |
− | = | + | Одна из многих вещей, которую узнаешь прочитав [http://nostarch.com/obenbsd2e Absolute OpenBSD] - это как отключить раздражающий [http://en.wikipedia.org/wiki/Bell_character сигнал]: |
+ | <pre># /etc/wsconsctl.conf | ||
+ | keyboard.bell.volume=0</pre> | ||
− | + | Начиная с релиза [http://www.openbsd.org/54.html 5.4] способ с '''wsconsctl''' больше не работает. Отключить сигнал можно так: | |
+ | <pre># ~/.xinitrc | ||
+ | xset -b</pre> | ||
+ | или | ||
+ | <pre># /etc/rc.conf.local | ||
+ | mixerctl inputs.spkr.mute=on</pre> | ||
− | + | == Монтирование съемных устройств пользователем == | |
− | + | Удобно, когда можно смонтировать DVD или флеш-носитель без повышения привилегий, используя для этого членство в группе '''operator'''. | |
+ | <pre># usermod -G operator eradman | ||
+ | # chmod g=rw /dev/cd0*</pre> | ||
+ | Остаётся изменить параметр ядра и можно пользоваться. | ||
+ | <pre># sysctl kern.usermount=1</pre> | ||
+ | <pre>$ mkdir -p mount/cdrom | ||
+ | $ mount /dev/cd0c mount/cdrom</pre> | ||
− | & | + | == Suspend & Resume == |
− | |||
− | + | OpenBSD обладает хорошей поддержкой ACPI, подробнее в [http://www.openbsd.org/cgi-bin/man.cgi?query=apmd&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html apmd(8)]. zzz и ZZZ быстрый способ перехода в режимы suspend и hibernate, если apmd запускается при загрузке. | |
+ | <pre># rc.conf.local | ||
+ | apmd_flags="-A"</pre> | ||
+ | "'''-A'''" будет автоматически масштабировать частоту CPU для оптимального энергопотребления. | ||
− | & | + | Начиная с выпуска [http://www.openbsd.org/56.html 5.6], управление сервисами осуществляется посредством утилиты [http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man8/rcctl.8?query=rcctl rcctl(8)]. |
− | & | + | <pre># rcctl getdef apmd |
+ | apmd_flags=NO | ||
+ | … | ||
+ | # rcctl enable apmd | ||
+ | … | ||
+ | # rcctl getdef apmd | ||
+ | apmd_flags=</pre> | ||
+ | |||
+ | == X Configuration: .xinitrc == | ||
+ | |||
+ | <pre># ~/.xinitrc | ||
+ | |||
+ | redshift -O 5600 | ||
+ | |||
+ | while true; do | ||
+ | batt="$(sysctl -n hw.sensors.acpibat0.watthour3 | cut -f1,2 -d" ")" | ||
+ | xsetroot -name "$batt" | ||
+ | sleep 60 | ||
+ | done & | ||
+ | xsetroot -solid steelblue & | ||
+ | exec dwm</pre> | ||
+ | |||
+ | [http://jonls.dk/redshift/ redshift] утилита предназначена для регулировки цветовой температуры экрана в зависимости от вашего окружения. Это работает и в случае ручной регулировки цветовой температуры. Например, подсветка экрана IBM T60p автора статьи по умолчанию "холодная", поэтому он изменяет значение цветовую температуры с 6500K до 5600K. | ||
+ | |||
+ | Запускаем циклический опрос сенсора времени жизни батареи (battery life (Wh)) с интервалом один раз в 60 сек, а полученное значение выводим "поверх" корневого окна. | ||
+ | |||
+ | Установим цвет фона и запустить свой любимый менеджер окон. | ||
+ | |||
+ | ==Переключение на внешний монитор== | ||
+ | Разрешение дисплея на рабочем месте немного выше чем дисплея ноутбука, небольшой скрипт для переключения на внешний монитор: | ||
+ | <pre>#!/bin/sh | ||
+ | xrandr --output LVDS --off | ||
+ | xrandr --output VGA-0 --off | ||
+ | xrandr --output DVI-0 --auto | ||
+ | redshift -O 6200</pre> | ||
+ | |||
+ | По моему опыту, X11 иногда скрывает курсор мыши, если возобновление работы системы происходило при подключенном внешнем мониторе. Для решения я использовал [http://sourceforge.net/projects/unclutter/ unclutter] - утилиту скрывающую курсор мыши когда он неподвижен и восстанавливающую его как только он переместился. | ||
+ | <pre>pkill unclutter | ||
+ | unclutter -idle 1 -root -grab -visible &</pre> | ||
+ | |||
+ | Лично мне больше нравится немного другой вариант: | ||
+ | <pre>xrandr --query | grep "VGA1 connected" && xrandr --output LVDS1 --off --output VGA1 --mode 1920x1080</pre> | ||
+ | |||
+ | ==Подключение проектора== | ||
+ | |||
+ | Если X-сервер запускается когда проектор подключен к VGA порту, то скорее всего сервер установит для встроенного и внешнего дисплеев одинаковое разрешение. На T60 например, это можно изменить: | ||
+ | <pre>xrandr --output LVDS --mode 1400x1050</pre> | ||
+ | |||
+ | Используя --query можно узнать какие режимы поддерживаются дисплеем, then I set up a viewport that pans with the mouse pointer | ||
+ | <pre>xrandr --output VGA-0 --mode 1024x768 --panning 1400x1050</pre> | ||
+ | |||
+ | Так же, я добавил в .xinitrc команды для автоматической конфигурации дисплеев, если при запуске X-сервера внешний монитор уже подключен: | ||
+ | <pre>xrandr --query | grep "DVI-0 connected" && ~/bin/docked-dvi | ||
+ | xrandr --query | grep "VGA-0 connected" && ~/bin/docked-vga</pre> | ||
+ | |||
+ | ==tmux - мультиплексор терминалов== | ||
+ | |||
+ | Несколько дополнений в мою конфигурацию мультиплексора терминалов. Я часто запускаю [http://entrproject.org/ entr] в небольшой панели снизу. | ||
+ | <pre>bind-key C-t split-window -p 25</pre> | ||
+ | |||
+ | Не знаю палитры цветов терминала, но её можно распечатать: | ||
+ | <pre>#!/bin/ksh | ||
+ | |||
+ | for i in `jot 255`; do | ||
+ | printf "\033[38;5;${i}mcolour${i}\n" | ||
+ | done</pre> | ||
+ | |||
+ | Фон строки состояния и границы активного окна ярко-зеленый: | ||
+ | <pre>set -g status-bg colour118 | ||
+ | set -g pane-active-border-fg colour118 | ||
+ | set -g pane-border-fg colour30</pre> | ||
+ | |||
+ | Таблица с сопоставлением [["Горячие" клавиши tmux и screen | клавиатурных комбинаций для tmux и screen]] | ||
+ | |||
+ | ==Использование шифрования для дисков== | ||
+ | OpenBSD предоставляет программный RAID как виртуальный хост-адаптер шины ([https://ru.wikipedia.org/wiki/HBA HBA]). Также HBA применяется для настройки и использования шифрования дисков. Посредством [http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man8/disklabel.8 disklabel(8)] установим тип раздела RAID (в оригинальной статье автор использует блочное устройство '''/dev/sd0c''' как шифрованный том, монтируемый в '''/home'''): | ||
+ | <pre>$ sudo disklabel -E /dev/sd0c | ||
+ | Label editor (enter '?' for help at any prompt) | ||
+ | g: 55641600 100653824 RAID | ||
+ | > m g | ||
+ | offset: [100653824] | ||
+ | size: [55641600] | ||
+ | FS type: [4.2BSD] RAID</pre> | ||
+ | |||
+ | Для настройки шифрования используем [http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man8/bioctl.8 bioctl(8)] с параметром -c C: | ||
+ | <pre># bioctl -c C -l /dev/sd0g softraid0 | ||
+ | New passphrase: My Crypto Pass Phrase | ||
+ | Re-type passphrase: My Crypto Pass Phrase | ||
+ | softraid0: CRYPTO volume attached as sd1</pre> | ||
+ | |||
+ | Монтирование выполняется той же командой, журнал ядра сообщит о появлении нового виртуального устройства: | ||
+ | <pre>sd1 at scsibus2 targ 1 lun 0: <OPENBSD, SR CRYPTO, 005> SCSI2 0/direct fixed | ||
+ | sd1: 27168MB, 512 bytes/sector, 55641072 sectors</pre> | ||
+ | |||
+ | Разметим и отформатируем шифрованный том: | ||
+ | <pre>$ sudo disklabel -E /dev/sd1c | ||
+ | ... | ||
+ | $ sudo newfs /dev/rsd1a</pre> | ||
+ | |||
+ | Устройства в OpenBSD могут монтироваться по имени или с использованием disklabel UID, который случайным образом генерируется при разметке: | ||
+ | <pre>$ disklabel /dev/sd1a | grep uid | ||
+ | duid: 779d87bac3905122</pre> | ||
+ | |||
+ | Полученный UID используется для монтирования тома, что позволяет избежать путаницы при. Код ниже, позволит выполнить четыре попытки ввода ключевой фразы для дешифрации тома: | ||
+ | <pre>#/etc/rc.local | ||
+ | for attept in 1 2 3 4; do | ||
+ | bioctl -c C -l c3e2f405c96a8e10.g softraid0 && break | ||
+ | sleep 1 | ||
+ | done | ||
+ | fsck /dev/rsd1a | ||
+ | mount -o nodev,nosuid,softdep 779d87bac3905122.a /home</pre> | ||
+ | |||
+ | Если необходим полностью шифрованный загрузочный том, ознакомьтесь с [http://www.tedunangst.com/flak/post/OpenBSD-softraid-crypto-boot публикацией] Ted Unangst. | ||
+ | |||
+ | ==Уменьшим "возню" с паролями с помощью YubiKey== | ||
+ | |||
+ | [https://www.yubico.com/ Yubico] выпускают небольшие аппаратные ключи, которые используются для авторизации с использованием одноразовых паролей ([https://ru.wikipedia.org/wiki/%D0%9E%D0%B4%D0%BD%D0%BE%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D1%8B%D0%B9_%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8C OTP]). Yubikey-personalization-gui - это QT-приложение, которое может быть использовано для записи приватных ключей в один из двух слотов. Запишите без пробелов 6-байт в файл приватной? идентификации и 16-байт в файл ключа: | ||
+ | <pre>echo "5c e1 e0 3e 63 a4" \ | ||
+ | | tr -d ' ' > /var/db/yubikey/$USER.id | ||
+ | echo "57 e3 af 3e 9b 51 2b 10 58 7d 33 fb d9 08 ef 7b" \ | ||
+ | | tr -d ' ' > /var/db/yubikey/$USER.key | ||
+ | chmod 600 /var/db/yubikey/$USER.*</pre> | ||
+ | |||
+ | Настроим YubiKey в качестве метода локальной авторизации и авторизации через SSH. | ||
+ | |||
+ | <pre># Default allowed authentication styles | ||
+ | auth-defaults:auth=yubikey,passwd,skey:</pre> | ||
+ | |||
+ | Перестроим БД авторизации - '''login.conf''' | ||
+ | |||
+ | <pre>cap_mkdb /etc/login.conf</pre> | ||
+ | |||
+ | Для уменьшения количества вводимых символов, второй слот YubiKey используется как относительно безопасный метод активации [http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent&format=html ssh-agent], что позволяет соединяться с удалёнными системами, на которых уже присутствует мой публичный ключ (RSA, DSA, ECDSA). Для этого, используя yubikey-personalization-gui создайте случайный ключ, а затем установите слот 2 в режим "запрос-ответ" (challеnge-response): | ||
+ | |||
+ | <pre>hexkey=$(echo "dd b6 68 81 c9 73 f9 64 84 21 7e f0 69 e8 2c 28 1b 6c ad e2" | tr -d ' ') | ||
+ | ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -a $hexkey</pre> | ||
+ | |||
+ | Затем создайте новую пару SSH-ключей с помощью ответов ykchalresp. Скрипт ykauth, установлен в ~/bin. | ||
+ | |||
+ | <pre>#!/bin/sh | ||
+ | ykchalresp -2 "$(whoami)@$(hostname)" | cut -c 1-15</pre> | ||
+ | |||
+ | И наконец, настроим автоматическую активацию ключей при входе в систему: | ||
+ | |||
+ | <pre>ssh-add -l > /dev/null 2>&1 || { | ||
+ | eval `ssh-agent` | ||
+ | DISPLAY='' SSH_ASKPASS='/home/eradman/bin/ykauth' ssh-add < /dev/null | ||
+ | exec ksh | ||
+ | }</pre> | ||
+ | |||
+ | ==Настройка производительности== | ||
+ | |||
+ | Нет документов описывающих способы адаптации OpenBSD для рабочей станции. Я делаю следующие изменения. Первое, позволяю приложениям использовать больше оперативной памяти: | ||
+ | |||
+ | <pre># /etc/login.conf | ||
+ | staff:\ | ||
+ | :datasize-cur=2048M:\ | ||
+ | :datasize-max=2048M:\ | ||
+ | :datasize=2048M:\ | ||
+ | :openfiles-cur=1024:\ | ||
+ | :stacksize-cur=16M:\</pre> | ||
+ | |||
+ | Если знаете другие способы улучшить производительность, пожалуйста [mailto:ericshane@eradman.com сообщите] их автору. | ||
+ | |||
+ | ==Блокировка экрана== | ||
+ | |||
+ | Для автоматической блокировки экрана после 5 минут неактивности, добавьте указанный ниже код в '''~/.xinitrc''': | ||
+ | <pre>xidle -timeout 300 -program "/usr/X11R6/bin/xlock -mode blank" &</pre> | ||
+ | |||
+ | Чтобы это сработало когда система переходит в режим сна (suspended), необходимо в '''/etc/apm/suspend''' добавить сигнал '''xidle''' для запуска программы блокировки. | ||
+ | |||
+ | <pre>#!/bin/sh | ||
+ | pkill -USR1 xidle</pre> | ||
+ | |||
+ | ==Смена сетевого подключения== | ||
+ | |||
+ | Переключение из одной сети в другую, например из беспроводной в проводную, не является очевидным в BSD. | ||
+ | |||
+ | Во-первых, необходимо остановить dhcp-клиент, чтобы исключить попытки повторной активации сетевого интерфейса: | ||
+ | |||
+ | <pre>pkill dhclient</pre> | ||
+ | |||
+ | Затем удалить установленный IP-адрес и деактивировать сетевой интерфейс: | ||
+ | |||
+ | <pre>ifconfig wpi0 -inet down</pre> | ||
+ | |||
+ | Удаление IP-адреса так же сбрасывает локальные маршруты. Сбросить все прочие маршруты: | ||
+ | |||
+ | <pre>route -n flush</pre> | ||
+ | |||
+ | -n предотвращает попытки route пытаться разрешать имена хостов. | ||
+ | |||
+ | Если для подключения к беспроводной сети использовался WPA, следует удалить параметры подключения к сети, чтобы получать широковещательные SSID других сетей: | ||
+ | |||
+ | <pre>ifconfig wpi0 nwid "Mobile Hotspot" wpa wpakey 09123456789 | ||
+ | ifconfig wpi0 -nwid -wpa -wpakey # use broadcast id</pre> |
Текущая версия на 06:21, 28 декабря 2015
Вольный перевод статьи Eric Radman An OpenBSD Workstation с некоторыми дополнениями учитывающими изменения пришедшие в свежих релизах.
Выключение системы нажатием на кнопку питания
Безопасное выключение компьютера нажатием на кнопку питания возможно после передачи ядру параметра:
# /etc/sysctl.conf hw.allowpowerdown=1
Параметр может быть установлен только до перехода системы к уровню безопасности 1, подробнее в securelevel(7).
Больше никаких раздражающих сигналов
Одна из многих вещей, которую узнаешь прочитав Absolute OpenBSD - это как отключить раздражающий сигнал:
# /etc/wsconsctl.conf keyboard.bell.volume=0
Начиная с релиза 5.4 способ с wsconsctl больше не работает. Отключить сигнал можно так:
# ~/.xinitrc xset -b
или
# /etc/rc.conf.local mixerctl inputs.spkr.mute=on
Монтирование съемных устройств пользователем
Удобно, когда можно смонтировать DVD или флеш-носитель без повышения привилегий, используя для этого членство в группе operator.
# usermod -G operator eradman # chmod g=rw /dev/cd0*
Остаётся изменить параметр ядра и можно пользоваться.
# sysctl kern.usermount=1
$ mkdir -p mount/cdrom $ mount /dev/cd0c mount/cdrom
Suspend & Resume
OpenBSD обладает хорошей поддержкой ACPI, подробнее в apmd(8). zzz и ZZZ быстрый способ перехода в режимы suspend и hibernate, если apmd запускается при загрузке.
# rc.conf.local apmd_flags="-A"
"-A" будет автоматически масштабировать частоту CPU для оптимального энергопотребления.
Начиная с выпуска 5.6, управление сервисами осуществляется посредством утилиты rcctl(8).
# rcctl getdef apmd apmd_flags=NO … # rcctl enable apmd … # rcctl getdef apmd apmd_flags=
X Configuration: .xinitrc
# ~/.xinitrc redshift -O 5600 while true; do batt="$(sysctl -n hw.sensors.acpibat0.watthour3 | cut -f1,2 -d" ")" xsetroot -name "$batt" sleep 60 done & xsetroot -solid steelblue & exec dwm
redshift утилита предназначена для регулировки цветовой температуры экрана в зависимости от вашего окружения. Это работает и в случае ручной регулировки цветовой температуры. Например, подсветка экрана IBM T60p автора статьи по умолчанию "холодная", поэтому он изменяет значение цветовую температуры с 6500K до 5600K.
Запускаем циклический опрос сенсора времени жизни батареи (battery life (Wh)) с интервалом один раз в 60 сек, а полученное значение выводим "поверх" корневого окна.
Установим цвет фона и запустить свой любимый менеджер окон.
Переключение на внешний монитор
Разрешение дисплея на рабочем месте немного выше чем дисплея ноутбука, небольшой скрипт для переключения на внешний монитор:
#!/bin/sh xrandr --output LVDS --off xrandr --output VGA-0 --off xrandr --output DVI-0 --auto redshift -O 6200
По моему опыту, X11 иногда скрывает курсор мыши, если возобновление работы системы происходило при подключенном внешнем мониторе. Для решения я использовал unclutter - утилиту скрывающую курсор мыши когда он неподвижен и восстанавливающую его как только он переместился.
pkill unclutter unclutter -idle 1 -root -grab -visible &
Лично мне больше нравится немного другой вариант:
xrandr --query | grep "VGA1 connected" && xrandr --output LVDS1 --off --output VGA1 --mode 1920x1080
Подключение проектора
Если X-сервер запускается когда проектор подключен к VGA порту, то скорее всего сервер установит для встроенного и внешнего дисплеев одинаковое разрешение. На T60 например, это можно изменить:
xrandr --output LVDS --mode 1400x1050
Используя --query можно узнать какие режимы поддерживаются дисплеем, then I set up a viewport that pans with the mouse pointer
xrandr --output VGA-0 --mode 1024x768 --panning 1400x1050
Так же, я добавил в .xinitrc команды для автоматической конфигурации дисплеев, если при запуске X-сервера внешний монитор уже подключен:
xrandr --query | grep "DVI-0 connected" && ~/bin/docked-dvi xrandr --query | grep "VGA-0 connected" && ~/bin/docked-vga
tmux - мультиплексор терминалов
Несколько дополнений в мою конфигурацию мультиплексора терминалов. Я часто запускаю entr в небольшой панели снизу.
bind-key C-t split-window -p 25
Не знаю палитры цветов терминала, но её можно распечатать:
#!/bin/ksh for i in `jot 255`; do printf "\033[38;5;${i}mcolour${i}\n" done
Фон строки состояния и границы активного окна ярко-зеленый:
set -g status-bg colour118 set -g pane-active-border-fg colour118 set -g pane-border-fg colour30
Таблица с сопоставлением клавиатурных комбинаций для tmux и screen
Использование шифрования для дисков
OpenBSD предоставляет программный RAID как виртуальный хост-адаптер шины (HBA). Также HBA применяется для настройки и использования шифрования дисков. Посредством disklabel(8) установим тип раздела RAID (в оригинальной статье автор использует блочное устройство /dev/sd0c как шифрованный том, монтируемый в /home):
$ sudo disklabel -E /dev/sd0c Label editor (enter '?' for help at any prompt) g: 55641600 100653824 RAID > m g offset: [100653824] size: [55641600] FS type: [4.2BSD] RAID
Для настройки шифрования используем bioctl(8) с параметром -c C:
# bioctl -c C -l /dev/sd0g softraid0 New passphrase: My Crypto Pass Phrase Re-type passphrase: My Crypto Pass Phrase softraid0: CRYPTO volume attached as sd1
Монтирование выполняется той же командой, журнал ядра сообщит о появлении нового виртуального устройства:
sd1 at scsibus2 targ 1 lun 0: <OPENBSD, SR CRYPTO, 005> SCSI2 0/direct fixed sd1: 27168MB, 512 bytes/sector, 55641072 sectors
Разметим и отформатируем шифрованный том:
$ sudo disklabel -E /dev/sd1c ... $ sudo newfs /dev/rsd1a
Устройства в OpenBSD могут монтироваться по имени или с использованием disklabel UID, который случайным образом генерируется при разметке:
$ disklabel /dev/sd1a | grep uid duid: 779d87bac3905122
Полученный UID используется для монтирования тома, что позволяет избежать путаницы при. Код ниже, позволит выполнить четыре попытки ввода ключевой фразы для дешифрации тома:
#/etc/rc.local for attept in 1 2 3 4; do bioctl -c C -l c3e2f405c96a8e10.g softraid0 && break sleep 1 done fsck /dev/rsd1a mount -o nodev,nosuid,softdep 779d87bac3905122.a /home
Если необходим полностью шифрованный загрузочный том, ознакомьтесь с публикацией Ted Unangst.
Уменьшим "возню" с паролями с помощью YubiKey
Yubico выпускают небольшие аппаратные ключи, которые используются для авторизации с использованием одноразовых паролей (OTP). Yubikey-personalization-gui - это QT-приложение, которое может быть использовано для записи приватных ключей в один из двух слотов. Запишите без пробелов 6-байт в файл приватной? идентификации и 16-байт в файл ключа:
echo "5c e1 e0 3e 63 a4" \ | tr -d ' ' > /var/db/yubikey/$USER.id echo "57 e3 af 3e 9b 51 2b 10 58 7d 33 fb d9 08 ef 7b" \ | tr -d ' ' > /var/db/yubikey/$USER.key chmod 600 /var/db/yubikey/$USER.*
Настроим YubiKey в качестве метода локальной авторизации и авторизации через SSH.
# Default allowed authentication styles auth-defaults:auth=yubikey,passwd,skey:
Перестроим БД авторизации - login.conf
cap_mkdb /etc/login.conf
Для уменьшения количества вводимых символов, второй слот YubiKey используется как относительно безопасный метод активации ssh-agent, что позволяет соединяться с удалёнными системами, на которых уже присутствует мой публичный ключ (RSA, DSA, ECDSA). Для этого, используя yubikey-personalization-gui создайте случайный ключ, а затем установите слот 2 в режим "запрос-ответ" (challеnge-response):
hexkey=$(echo "dd b6 68 81 c9 73 f9 64 84 21 7e f0 69 e8 2c 28 1b 6c ad e2" | tr -d ' ') ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -a $hexkey
Затем создайте новую пару SSH-ключей с помощью ответов ykchalresp. Скрипт ykauth, установлен в ~/bin.
#!/bin/sh ykchalresp -2 "$(whoami)@$(hostname)" | cut -c 1-15
И наконец, настроим автоматическую активацию ключей при входе в систему:
ssh-add -l > /dev/null 2>&1 || { eval `ssh-agent` DISPLAY='' SSH_ASKPASS='/home/eradman/bin/ykauth' ssh-add < /dev/null exec ksh }
Настройка производительности
Нет документов описывающих способы адаптации OpenBSD для рабочей станции. Я делаю следующие изменения. Первое, позволяю приложениям использовать больше оперативной памяти:
# /etc/login.conf staff:\ :datasize-cur=2048M:\ :datasize-max=2048M:\ :datasize=2048M:\ :openfiles-cur=1024:\ :stacksize-cur=16M:\
Если знаете другие способы улучшить производительность, пожалуйста сообщите их автору.
Блокировка экрана
Для автоматической блокировки экрана после 5 минут неактивности, добавьте указанный ниже код в ~/.xinitrc:
xidle -timeout 300 -program "/usr/X11R6/bin/xlock -mode blank" &
Чтобы это сработало когда система переходит в режим сна (suspended), необходимо в /etc/apm/suspend добавить сигнал xidle для запуска программы блокировки.
#!/bin/sh pkill -USR1 xidle
Смена сетевого подключения
Переключение из одной сети в другую, например из беспроводной в проводную, не является очевидным в BSD.
Во-первых, необходимо остановить dhcp-клиент, чтобы исключить попытки повторной активации сетевого интерфейса:
pkill dhclient
Затем удалить установленный IP-адрес и деактивировать сетевой интерфейс:
ifconfig wpi0 -inet down
Удаление IP-адреса так же сбрасывает локальные маршруты. Сбросить все прочие маршруты:
route -n flush
-n предотвращает попытки route пытаться разрешать имена хостов.
Если для подключения к беспроводной сети использовался WPA, следует удалить параметры подключения к сети, чтобы получать широковещательные SSID других сетей:
ifconfig wpi0 nwid "Mobile Hotspot" wpa wpakey 09123456789 ifconfig wpi0 -nwid -wpa -wpakey # use broadcast id