Тази статия съдържа нашите най-добри практики за по-ефективно използване на SSH. От него ще научите как:
- Добавете втори фактор към влизането в SSH
- Използвайте безопасно препращане на агенти
- Излезте от прекъсната SSH сесия
- Дръжте постоянен терминал отворен
- Споделете отдалечена терминална сесия с приятел (без Zoom!)
Добавяне на втори фактор към вашия SSH
Можете да добавите втори фактор за удостоверяване към вашите SSH връзки по пет различни начина:
- Актуализирайте вашия 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 устройството е да дешифрира дескриптора на секретния ключ на диска, когато ключът за криптиране е активиран.
Освен това, като вторичен фактор, можете да предоставите парола за вашите ключове.
Резидентният ключ е друг тип генериране на -sk ключ, поддържан от OpenSSH. С този подход манипулаторът се съхранява на U2F устройството и ви позволява да го имате с ключа за криптиране, когато е необходимо. Можете да създадете резидентен ключ с командата:
$ ssh-keygen -t ecdsa-sk -O resident -f ~/.ssh/id_ecdsa_skСлед това, за да върнете манипулатора обратно в паметта на новото устройство, поставете ключа за шифроване и изпълнете командата:
$ ssh-add -KКогато се свързвате с хоста, все пак ще трябва да активирате ключа за криптиране.
- Използвайте PIV+PKCS11 и Yubikey. Свързването към устройства с по-ранни версии на SSHD с помощта на ключ за криптиране ще изисква различен подход. Yubico има ръководство за използване на U2F+SSH с PIV/PKCS11. Това не е същото като FIDO U2F и въпреки че методът работи, отнема много работа, за да се разбере каква магия го управлява.
- Приложете персонализиран ssh агент на yubikey-agent. Филипо Валсорда написа SSH агент за Yubikeys. Той е напълно нов и съдържа минимални функции.
- Използвайте Touch ID и sekey. Sekey е SSH агент с отворен код, който съхранява частни ключове в защитен анклав на Mac и позволява Touch ID да се използва за функционалност за достъп.
- Използвайте Single Sign On SSH. Написах урок, за да ви помогна да настроите този метод. Едно от предимствата на единичното подписване на SSH е възможността да използвате политиките за сигурност на вашия доставчик на самоличност – включително поддръжка за многофакторно удостоверяване (MFA).
Безопасно използване на препращане на агенти
Препращането на SHH агент позволява на отдалечен хост да има достъп до SSH агента на вашето локално устройство. Когато използвате SSH с активирано пренасочване на агент (обикновено чрез ssh -A), ще има два канала във връзката: вашата интерактивна сесия и каналът за препращане на агент. Чрез този канал Unix сокетът, създаден от вашия локален SSH агент, се свързва с отдалечения хост. Това е рисков метод, тъй като потребител с root достъп на отдалеченото устройство може да получи достъп до вашия локален SSH агент и потенциално да се представя за вас онлайн. Използвайки стандартния SSH агент от комплекта Open SSH, вие дори няма да разберете, че това се е случило. Наличието на U2F ключ (или Sekey) ще ви помогне ефективно да блокирате всякакви опити за използване на вашия SSH агент отвън.
Дори и с тази предпазна мярка е добра идея да използвате препращане на агент възможно най-малко. Не трябва да го използвате във всяка сесия - използвайте пренасочване на агент само когато сте сигурни, че е необходимо за текущата сесия.
Излизане от прекъсната сесия
Прекъсване на мрежата, поведение на програми извън контрол или последователност за изход, която блокира въвеждането от клавиатурата, са всички възможни причини за прекратяване на SSH сесия.
Има няколко начина за прекратяване на прекъсната сесия:
- Автоматично излизане при прекъсване на мрежата. Трябва да добавите следното към вашия .ssh/config:
ServerAliveInterval 5 ServerAliveCountMax 1ssh ще изпраща ехо до отдалечения хост на всеки ServerAliveInterval секунди, за да провери връзката. Ако повече от ServerAliveCountMax ехо не получат отговор, ssh ще прекъсне връзката и ще излезе от сесията.
- Излезте от сесията. ssh по подразбиране използва знака ~ (тилда) като контролен знак. Екип ~. затваря отворената връзка и ви връща обратно към терминала. (Escape последователностите могат да се въвеждат само на нов ред.) ~? ще покаже пълен списък с команди, налични в тази сесия. Моля, обърнете внимание, че за да въведете знака ~ на международни клавиатури, може да се наложи да натиснете клавиша ~ два пъти.
Защо изобщо се случват замразени сесии? Когато беше създаден Интернет, компютрите рядко се местяха от място на място. Когато използвате лаптопи и превключвате между множество IPv4 WiFi мрежи, вашият IP адрес се променя. Тъй като SSH разчита на TCP връзки, които от своя страна разчитат на крайна точка със стабилен IP адрес, всеки път, когато превключвате между мрежите, вашите SSH връзки пропускат манипулатора на сокета и ефективно се губят сами. Когато вашият IP адрес се промени, отнема време на мрежовия стек да открие загубата на манипулатора. Когато възникнат мрежови проблеми, ние не искаме един от възлите на TCP връзката да я прекрати твърде рано. Следователно протоколът ще се опита да изпрати отново данните още няколко пъти, преди окончателно да се откаже. Междувременно във вашия терминал сесията ще изглежда замразена. IPv6 добавя няколко функции, свързани с мобилността, които позволяват на устройството да поддържа домашния си адрес, докато сменя мрежите. Може би един ден това няма да е такъв проблем.
Как да поддържате постоянен терминал отворен на отдалечен хост
Има два различни подхода за това как да поддържате връзката си, когато се движите между различни мрежи или искате да прекъснете връзката за известно време.
1. Възползвайте се или
Ако наистина се нуждаете от връзка, която не прекъсва дори когато превключвате между мрежи, използвайте мобилната обвивка на Mosh. Това е защитена обвивка, която първо използва SSH ръкостискане и след това превключва към свой собствен криптиран канал за продължителността на сесията. Ето как Mosh създава отделен, много стабилен и сигурен канал, който може да издържи на прекъсвания в интернет, промяна на IP адреса на вашия лаптоп, сериозни прекъсвания на мрежата и много други, и всичко това благодарение на магията на UDP връзките, както и като Mosh протоколът за синхронизация.
За да използвате Mosh, ще трябва да го инсталирате както на клиента, така и на сървъра и да отворите портове 60000-61000 за несвързан UPD трафик към вашия отдалечен хост. В бъдеще, за да се свържете, ще бъде достатъчно да използвате mosh user@server.
Mosh работи на ниво екрани и натискания на клавиши, което му дава редица предимства пред изпращането на двоичен поток от стандартен вход и изход между клиента и SSH сървъра. Ако трябва само да синхронизираме екрани и натискания на клавиши, тогава възстановяването на прекъсната връзка по-късно става много по-лесно. Докато SSH ще буферира и изпраща всичко, което се е случило, Mosh трябва само да буферира натискания на клавиши и да синхронизира последния кадър на прозореца на терминала с клиента.
2. Използвайте tmux
Ако искате да „идвате и си отивате, както пожелаете“ и да поддържате терминална сесия на отдалечен хост, използвайте tmux. Обичам tmux и го използвам през цялото време. Ако вашата SSH връзка е прекъсната, тогава, за да се върнете към вашата tmux сесия, просто трябва да се свържете отново и да влезете tmux attach. В допълнение, той има толкова прекрасни функции като вътрешнотерминални раздели и панели, подобни на разделите в терминала на iOS, и възможност за споделяне на терминали с други.
Някои хора обичат да украсяват своя tmux с Byobu, пакет, който значително подобрява използваемостта на tmux и добавя много клавишни комбинации към него. Byobu идва в комплект с Ubuntu и е лесен за инсталиране на Mac чрез Homebrew.
Споделяне на отдалечена терминална сесия с приятел
Понякога, когато отстранявате грешки на сложни проблеми на вашите сървъри, може да искате да споделите SSH сесия с някой, който не е в същата стая като вас. tmux е перфектен за тази задача! Нужни са само няколко стъпки:
- Уверете се, че tmux е инсталиран на вашия бастионен възел или на всеки сървър, с който ще работите.
- И двамата ще трябва да влезете по SSH в устройството, като използвате един и същ акаунт.
- Един от вас трябва да работи с tmux, за да започне tmux сесия.
- Другият трябва да изпълнява tmux attach
- Ето! Имате споделен терминал.
Ако искате по-сложни многопотребителски tmux сесии, опитайте tmate, разклонение на tmux, което прави споделените терминални сесии много по-лесни.
Източник: www.habr.com
