Сила .ssh/config

Извечная задача получить доступ к одной машине через другую чаще всего решается при помощи SSH-туннелей — удобно, пока не приходится получать доступ к группе машин. Недостаток традиционного решения — не всегда удаётся придумать удачное правило выбора портов, чтобы не запутаться как мы должны соединяться, чтобы попасть на нужную машину.

SSH-туннель (12.37КиБ)
Пример конфигурационного файла для получения доступа к группе машин

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

Тут нам пригодится файл ~/.ssh/config, служащий для конфигурирования SSH-соединений, я обычно туда вписываю символические имена вместо айпи-адресов, логины и прочую мишуру. Но его возможности несколько шире.

Например на картинке выше у меня конфигурация, которая позволяет к любому айпи-адресу, который начинается с 172.17.0 через машину 172.17.1.131. Вся магия заключается в директиве ProxyCommand — в ней указано, что надо залогиниться на 172.17.1.131 и там запустить команду nc, которая откроет соединение на нужный нам адрес (он будет подставлен вместо «%h»).

Таким образом получается соединение, весь трафик которого без изменений попадает на нужный нам адрес, а уже в этом соединении мы выполняем обычный логин на нужную нам машину. Все аутентификации у меня, естественно, сделаны через сертификаты.

4 комментария

Скриптование меню в статус-баре

В «Маке» очень нехватает одной вещи — лёгкого создания собственных меню в статус-баре. Учить ради этого «Обжектив-Си» или «Свифт» (и ставить «ЭксКод») мне совершенно не хочется, поэтому я поискал готовое. Нашёл ровно одно полусырое решение.

Если кому интересно, то последовательность его прикручивания к системе примерно такова (bolk — моё имя пользователя и требуется установленный brew):

mkdir -p /usr/local/Cellar/ScriptableStatusBar/0.1/bin/
mv ~/Downloads/ScriptableStatusBar-release/usr/local/bin/sbar !:2
mv ~/Downloads/ScriptableStatusBar-release/Applications/ 
    /usr/local/Cellar/ScriptableStatusBar/0.1
brew link ScriptableStatusBar
open /usr/local/Cellar/ScriptableStatusBar/0.1/Applications/

# Тут надо утянуть открывшееся приложение в «Объекты входа»
# и ещё запустить его в открывшемся окне, разрешив ему в принципе запускаться

Очень неудобно и несколько недоделано. Хотелось бы, чтобы из шелла можно было добавить/удалить пункт меню и сменить иконку. Сейчас это тоже можно, но полной переинициализацией и, кроме того, убъёшься всё экранировать.

Вооружившись несложной инструкцией, делаем несколько магических пассов:

cat>~/lockkeyboard.sh<<LOCK
#!/bin/ksh

kext=/System/Library/Extensions/AppleUSBTopCase.kext/Contents/PlugIns/AppleUSBTCKeyboard.kext/
case "$1" in
    unlock )
        /sbin/kextload "$kext"
        ;;
    lock )
        /sbin/kextunload "$kext"
        ;;
esac
LOCK

sudo chown root:staff ~/lockkeyboard.sh
sudo chmod 750 ~/lockkeyboard.sh

sudo cp /dev/stdin /private/etc/sudoers.d/lockkeyboard<<SUDO
bolk    ALL= NOPASSWD: /Users/bolk/lockkeyboard.sh
SUDO

sbar set locker ?\
    'Lock:/usr/bin/sudo /Users/bolk/lockkeyboard.sh lock'\
    'Unlock:/usr/bin/sudo /Users/bolk/lockkeyboard.sh unlock'\
    'Quit:/usr/local/bin/sbar remove locker'

И получаем малофункциональную такую менюшечку для блокировки клавиатуры (кстати и увы, если компьютер с заблокированной клавиатурой, у вас уйдёт в блокировку по какой-то причине, то пароль ввести не получится, придётся перезагрузиться):

Выпадающее меню с пунктами Quit, Unlock, Lock, открытое из иконки замка в строке состояния macOS; видны дата «Ср, 8 марта 7:49», заряд батареи 34%, значки Wi-Fi, звука и поиска.
Простое меню для блокировки клавиатуры

В принципе можно даже сэмулировать защёлкивание замка и смену пунктов меню «Lock» на «Unlock» и обратно (для этого нужно просто пересоздавать меню после каждой из этих команд с другими пунктами и другим замочком), но это ещё полэкрана костылей, которые мне совсем не хочется на вас вываливать.

Кстати, пункты в меню добавляются в произвольном порядке — программе совершенно плевать в каком порядке вы их задали в параметрах.

Дополнение: нашёл ещё две программы: «БитБар» и «ЭниБар».

8 комментариев