Кичинекей SSH трюктары

Бул макалада SSH натыйжалуураак колдонуу боюнча биздин мыкты тажрыйбалар камтылган. Анда сиз кантип үйрөнөсүз:

  • SSH кирүүсүнө экинчи факторду кошуңуз
  • Агенттик багыттоону коопсуз колдонуңуз
  • Үзгүлтүккө учураган SSH сеансынан чыгуу
  • Туруктуу терминалды ачык кармаңыз
  • Алыскы терминал сеансын досуңуз менен бөлүшүңүз (Зом жок!)

Сиздин SSH үчүн экинчи факторду кошуу

Сиз SSH байланыштарыңызга аутентификациянын экинчи факторун беш башка жол менен кошо аласыз:

  1. OpenSSH'иңизди жаңыртып, шифрлөө ачкычын колдонуңуз. 2020-жылдын февралында OpenSSH FIDO U2F (Universal Second Factor) шифрлөө ачкычтарын колдоону кошту. Бул эң сонун жаңы функция, бирок эскертүү бар: OpenSSH 8.2 жана андан жогору жаңыртылган кардарлар жана серверлер гана шифрлөө ачкычтарын колдоно алышат, анткени февраль жаңыруусу алар үчүн жаңы ачкыч түрлөрүн киргизет. Команда ssh –V буйрук менен SSH кардар версиясын жана сервер версиясын текшере аласыз nc [servername] 22

    Февраль версиясына ачкычтардын эки жаңы түрү кошулган - ecdsa-sk жана ed25519-sk (тиешелүү сертификаттар менен бирге). Ачкыч файлын түзүү үчүн, жөн гана шифрлөө ачкычыңызды киргизип, буйрукту аткарыңыз:
    $ ssh-keygen -t ecdsa-sk -f ~/.ssh/id_ecdsa_sk

    Ал жалпы жана купуя ачкычтарды жаратып, аларды U2F түзмөгүңүз менен байланыштырат. U2F түзмөгүндөгү жашыруун ачкычтын милдети шифрлөө ачкычы иштетилгенде дисктеги жашыруун ачкычтын дескрипторун чечмелөө болуп саналат.

    Кошумчалай кетсек, кошумча фактор катары ачкычтарыңыз үчүн купуя сөз айкашын бере аласыз.

    Резидент ачкычы OpenSSH тарабынан колдоого алынган -sk ачкычынын дагы бир түрү. Бул ыкма менен тутка U2F түзмөгүндө сакталат жана керек болгондо шифрлөө ачкычы менен ээ болууга мүмкүндүк берет. Сиз буйрук менен туруктуу ачкыч түзө аласыз:

    $ ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_ecdsa_sk

    Андан кийин, тутканы жаңы түзмөктүн эс тутумуна кайра коюу үчүн, шифрлөө ачкычын чаптап, буйрукту аткарыңыз:

    $ ssh-add -K

    Хостко туташып жатканда, сиз дагы эле шифрлөө ачкычын жандырышыңыз керек болот.

  2. PIV+PKCS11 жана Yubikey колдонуңуз. Шифрлөө ачкычы аркылуу SSHD'дин мурунку версиялары бар түзмөктөргө туташуу башка ыкманы талап кылат. Yubicoдо PIV/PKCS2 менен U11F+SSH колдонуу боюнча колдонмо бар. Бул FIDO U2F менен бирдей эмес жана бул ыкма иштесе да, аны кандай сыйкырчылык менен айдап жатканын аныктоо үчүн көп эмгек талап кылынат.
  3. Ыңгайлаштырылган yubikey-агент ssh агентин колдонуңуз. Filippo Valsorda Yubikeys үчүн SSH агент жазган. Бул толугу менен жаңы жана минималдуу өзгөчөлүктөрү бар.
  4. Touch ID жана sekey колдонуңуз. Sekey бул ачык булак SSH агенти, ал жеке ачкычтарды Macтин коопсуз анклавында сактайт жана Touch ID'ге кирүү функцияларын колдонууга мүмкүндүк берет.
  5. SSH боюнча жалгыз кирүү колдонуңуз. Мен бул ыкманы орнотууга жардам берүү үчүн окуу куралын жаздым. SSHдагы бир белгинин артыкчылыктарынын бири - бул сиздин идентификациялык камсыздоочуңуздун коопсуздук саясатын, анын ичинде көп факторлуу аутентификацияны (МФА) колдоону колдонуу мүмкүнчүлүгү.

Агентти жөнөтүүнү коопсуз колдонуу

SHH агентин багыттоо алыскы хостко жергиликтүү түзмөгүңүздүн SSH агентине кирүү мүмкүнчүлүгүн берет. Сиз SSHди агенттик багыттоо иштетилгенде (көбүнчө ssh -A аркылуу) колдонгонуңузда, туташууда эки канал болот: интерактивдүү сессияңыз жана агентти багыттоо үчүн канал. Бул канал аркылуу жергиликтүү SSH агенти тарабынан түзүлгөн Unix розеткасы алыскы хост менен туташат. Бул кооптуу ыкма, анткени алыскы түзмөктө тамырга кирүү мүмкүнчүлүгү бар колдонуучу сиздин жергиликтүү SSH агентиңизге кирүү мүмкүнчүлүгүнө ээ болуп, сизди онлайн режиминде чагылдырышы мүмкүн. Open SSH комплектинен стандарттуу SSH агентин колдонуп, сиз мунун болгонун билбей каласыз. U2F ачкычына (же Sekey) ээ болуу SSH агентиңизди сырттан колдонуу аракеттерин натыйжалуу бөгөттөп коюуга жардам берет.

Бул сактык чарасы менен дагы, агентти жөнөтүүнү мүмкүн болушунча аз колдонуу жакшы идея. Аны ар бир сеанс үчүн колдонбошуңуз керек - агент багыттоосун ал учурдагы сеанс үчүн керек экенине ынанганда гана колдонуңуз.

Асылып калган сессиядан чыгуу

Тармактын үзгүлтүккө учурашы, программалардын көзөмөлдөн тышкаркы аракети же клавиатура киргизүүнү бөгөттөөчү качуу ырааттуулугу SSH сессиясынын токтотулушунун мүмкүн болгон себептери болуп саналат.

Асылган сессияны токтотуунун бир нече жолу бар:

  1. Тармак үзүлгөндө автоматтык түрдө чыгуу. .ssh/config'иңизге төмөнкүлөрдү кошушуңуз керек:
    ServerAliveInterval 5
    ServerAliveCountMax 1

    ssh туташууну текшерүү үчүн ар бир ServerAliveInterval секунд сайын алыскы хостко жаңырык жөнөтөт. Эгерде ServerAliveCountMax жаңырыктарынан көп жооп албаса, ssh байланышты тындырып, сессиядан чыгат.

  2. Сессиядан чыгуу. ssh демейки боюнча башкаруу белгиси катары ~ (тилде) символун колдонот. Команда ~. ачык байланышты жаап, кайра терминалга кайтарат. (Escape ырааттуулугун жаңы сапка гана киргизүүгө болот.) The ~? бул сессияда жеткиликтүү буйруктардын толук тизмесин көрсөтөт. Эл аралык клавиатураларда ~ белгисин терүү үчүн, сиз ~ баскычын эки жолу басышыңыз керек экенин эске алыңыз.

Эмне үчүн тоңдурулган сессиялар такыр болот? Интернет жаралганда компьютерлер бир жерден экинчи жерге сейрек көчкөн. Ноутбуктарды колдонгондо жана бир нече IPv4 WiFi тармактарын алмаштырганда, IP дарегиңиз өзгөрөт. SSH TCP туташууларына таянгандыктан, алар өз кезегинде туруктуу IP дареги бар акыркы чекитке таянат, сиз тармактарды алмаштырган сайын, SSH туташууларыңыз розетка туткасын өткөрүп жиберишет жана эффективдүү түрдө өздөрүн жоготуп алышат. Сиздин IP дарегиңиз өзгөргөндө, туткаңыздын жоголушун аныктоо үчүн тармактык стек убакытты талап кылат. Тармак көйгөйлөрү пайда болгондо, TCP туташуусундагы түйүндөрдүн бири аны өтө эрте токтотушун каалабайбыз. Ошондуктан, протокол акыры баш тартууга чейин маалыматтарды дагы бир нече жолу кайра жөнөтүүгө аракет кылат. Ошол эле учурда, сиздин терминалыңызда сеанс тоңуп калгандай көрүнөт. IPv6 мобилдүүлүккө байланыштуу бир нече функцияларды кошот, алар тармакты өзгөртүп жатканда түзмөккө үй дарегин сактоого мүмкүндүк берет. Балким, бир күнү мындай көйгөй болбойт.

Алыскы хостто туруктуу терминалды кантип ачык кармоо керек

Ар кандай тармактардын ортосунда жүрүп же бир аз убакытка ажыратууну каалаганда байланышыңызды кантип сактоонун эки башка ыкмасы бар.

1. Пайдалануу Мош же Түбөлүк терминал

Эгер сиз чындап эле тармактарды алмаштырганда да үзүлбөй турган байланыш керек болсо, Mosh мобилдик кабыгын колдонуңуз. Бул алгач SSH кол алышуусун колдонуп, андан кийин сессиянын узактыгы үчүн өзүнүн шифрленген каналына которулган коопсуз кабык. Mosh интернет үзгүлтүктөрүнө, ноутбуктун IP дарегинин өзгөрүшүнө, тармактын олуттуу үзгүлтүккө учурашына жана башка көптөгөн нерселерге туруштук бере турган өзүнчө, өтө бышык жана коопсуз каналды ушундайча жаратат, мунун баары UDP туташууларынын сыйкырынын аркасында, ошондой эле Mosh синхрондоштуруу протоколу катары.

Mosh колдонуу үчүн сиз аны кардарга да, серверге да орнотуп, алыскы хостуңузга туташкан эмес UPD трафиги үчүн 60000-61000 портторун ачышыңыз керек. Келечекте, аны колдонуу үчүн жетиштүү болот туташтыруу mosh user@server.

Mosh экрандар жана баскычтарды басуу деңгээлинде иштейт, бул ага кардар менен SSH серверинин ортосунда стандарттык киргизүү жана чыгаруунун бинардык агымын жөнөтүүдөн бир катар артыкчылыктарды берет. Бизге экрандарды жана баскыч басууларды синхрондоштуруу гана керек болсо, анда бузулган байланышты кийинчерээк калыбына келтирүү бир топ жеңилдейт. SSH болгон нерсенин баарын буферлеп, жөнөтөт, ал эми Mosh баскычтарды басууларды буферлөө жана терминал терезесинин акыркы кадрын кардар менен синхрондоштуруу гана керек.

2. tmux колдонуңуз

Эгер сиз "каалаганыңыздай келип-кетүүнү" жана алыскы хостто терминалдык сеансты улантууну кааласаңыз, колдонуңуз терминалдык мультиплексор tmux. Мен tmuxти жакшы көрөм жана аны ар дайым колдоном. Эгер SSH туташууңуз үзгүлтүккө учураса, tmux сессияңызга кайтуу үчүн сиз жөн гана кайра туташып, кирүү керек. tmux attach. Мындан тышкары, ал iOS терминалындагы өтмөктөргө окшош интра-терминалдык өтмөктөр жана панелдер жана терминалдарды башкалар менен бөлүшүү мүмкүнчүлүгү сыяктуу сонун өзгөчөлүктөргө ээ.

Кээ бир адамдар tmuxту Byobu менен өркүндөтүүнү жакшы көрүшөт, бул пакет tmuxтун ыңгайлуулугун бир топ жакшыртат жана ага клавиатуранын көптөгөн жарлыктарын кошот. Byobu Ubuntu менен бирге келет жана Homebrew аркылуу Mac'ка орнотуу оңой.

Алыскы терминал сеансын досуңуз менен бөлүшүү

Кээде серверлериңиздеги татаал көйгөйлөрдү оңдоодо сиз SSH сеансын сиз менен бир бөлмөдө болбогон адам менен бөлүшкүңүз келиши мүмкүн. tmux бул тапшырма үчүн идеалдуу! Ал бир нече кадамдарды гана талап кылат:

  1. tmux сиздин bastion түйүнүңүздө же сиз иштей турган серверде орнотулганын текшериңиз.
  2. Экөөңүз тең бир эле эсепти колдонуп түзмөккө SSH кылышыңыз керек болот.
  3. tmux сеансын баштоо үчүн бирөөңүз tmux иштетип жатышы керек.
  4. Экинчиси tmux тиркемесин иштетиши керек
  5. Voila! Сизде жалпы терминал бар.

Эгер сиз көп колдонуучулуу tmux сеанстарынын татаалыраак болушун кааласаңыз, жалпы терминалдык сеанстарды жеңилдеткен tmate, tmux айрысын колдонуп көрүңүз.

Source: www.habr.com

Комментарий кошуу