12 полезни трика за опитимизиране на работата със SSH

12 полезни трика за опитимизиране на работата със SSH

Всеки администратор би искал да работи при високи нива на сигурност, бързо, възможно най-ефективно и без да бъде „подслушван“, нали?

За да видите, че това е постижимо сме подбрали 12 полезни съвета за това как да оптимизирате работата си със SSH и това да облекчи ежедневната ви работа с отдалечени машини и всичко, което би могло да се стартира отдалечено в текстови режим.

Secure Shell e Unix базиран протокол за защитено достъпване на отдалечени машини. Използва се за администрация на сървъри, както и за всякакви други дейности, които могат да се извършват отдалечено в текстови режим.

SSH протокола предоставя високо ниво на сигурност както при удостоверяване, така и при криптирането на връзката и е проектиран да замести по-ранни протоколи и инструменти за отдалечен достъп като Telnet, rlogin, rsh, rcp, rexec и други. И двата края на свързването клиент-сървър са защитени с помощта на цифров сертификат, както и с криптирани пароли.

Как работи SSH

Свързвайки се чрез SSH, ще попаднете в текстово базиран интерфейс, където ще можете да взаимодействате с вашия сървър . За продължителността на вашата сесия, всички команди, зададени през терминала ви, се изпращат чрез криптиран SSH тунел и се изпълняват на сървъра ви. SSH е базиран на модела клиент-сървър. Това означава, че на отдалечената машина трябва да работи софтуер наречен SSH daemon, който слуша за входящи връзки. Съответно на машината, от която се осъществява връзката трябва да има SSH клиент. След като SSH сървърът удостовери клиента, между двете се осъществява криптирана сесия, което прави невъзможно подслушването или модифицирането на данните от трети лица.

Има две основни версии на SSH протокола SSH v1 и SSH v2 . Те не са съвместими една с друга, но повечето имплементации поддържат и двете. Версия SSH v2 има многобройни подобрения и е значително по сигурна от предшественика си. През 2006 година е възприета като стандарт от IETF. Днес предимно се използва SSH v2.

За какво може да използвате SSH:

  1. Сигурен достъп до отдалечен сървър.
  2. Сигурен трансфер на файлове.
  3. VPN.
  4. Сърфиране през криптирана връзка през SOCKS proxy.
  5. Монтиране на отдалечени папки в локалната файлова система.
  6. В комбинация с rsync се ползва за бекъпи, копиране и създаване на огледални копия през сигурна връзка.
  7. Изпълняване на отделни команди на отдалечени сървъри.
  8. Създаване на криптирани тунели.
  9. Пренасочване на портове.
  10. Други.

SSH клиент

openssh

Какво е SSH клиент – софтуер, който ви е необходим, за да се свържете чрез SSH протокол с отдалечена машина.

Има многобройни имплементации на SSH, като най-разпространена е OpenSSH. Под Windows като SSH клиент се ползва най-често програмата Putty.

Съществуват няколко начина за удостоверяване на SSH клиента спрямо сървъра, в зависимост от това дали се ползва SSH v1 или SSH v2. Двата най-разпространени начина са:

  1. Удостоверяване на потребителя чрез потребителско име и парола.
  2. Чрез използването на публичен и частен ключ.

Повече за това как да използвате SSH клиента и да осъществите връзка през slogin може да видите в тази помощна статия: Основни познания за SSH

Трикове за оптимизиране на работата със SSH:

SSH има много функции, които са доста полезни при работа с файлове на отдалечени сървъри. Използването на тези функции може значително да увеличи производителността по време на работата със SSH. Затова си струва да ви представим няколко хитри трика за оптимизиране на работата с SSH. Ето ги и тях:

1. SSH ключове - набор от сходни криптографски ключове, които могат да бъдат използвани за удостоверяване на потребителите. Всеки комплект съдържа публичен и частен ключ. Набора от SSH ключове, трябва да бъде качен на локалния компютър. На отдалечения сървър, публичният ключ трябва да бъде копиран във файл в рамките на личната директория на потребителя при ~/.ssh/authorized_keys. Този файл съдържа списък с публични ключове, по един на ред, които са оторизирани за влизане в акаунта.

2. SSH ключове с Puttyможе да генерирате SSH ключове и през SSH клиента Putty. От официалния сайт на Putty изтеглете PuttyGen and Pageant. Използвайте PuttyGen, за да генерирате ключ и го копирайте на отдалечения сървър .ssh/authorized_keys, след това стартирайте Pageant.

3. Копиране на файлове - И така с помощта на споделените връзки, ще може да копирате файлове от и на отдалечения сървър с лекота.

4. Монтиране на отдалечена папка в локалната файлова система - Понякога не е достатъчно копирането на един или много файлове от една машина на друга. Качването на отдалечена директория във вашата локална файлова система се оказва изключително полезно, особено когато искате да работите с отдалечени файлове на локални програми.

5. Multiple Connections – от полза е да имате няколко връзки към един сървър, за да можете например да редактирате файл, да старатирате команди във файловата система и да гледате лог файла в различни сесийни прозорци. За щастие разполагаме с функцията на OpenSSH - connection sharing.

За да стартирате connection sharing, редактирайте (или създайте) ваш личен SSH config, който се съхранява във файла ~/.ssh/config, и въведете следните редове:

ControlMaster auto

*ControlPath /tmp/sshmux%h%p%r*

След това излезте от всички съществуващи SSH връзки и направете нова връзка със сървъра. Направете връзка и във втори сесиен прозорец SSH на същия сървър. Вторият команден прозерец би трябвало да се появи мигновенно.

6. Repeated Connections - ако често правите множество последователни връзки на един сървър (правите нещо на сървъра, след това излизате, и след това малко по-късно се логвате отново), то тогава включете функцията persistent connections:

ControlPersist 4h

Това ще задържи връзката в готовност за около 4 часа (или за време, което вие си изберете) след като излезете, когато решите отново да се свържете на същия сървър. Това наистина ще подобри скоростта на копиране на множество файлове. ControlPersist изисква OpenSSH 5.6 или по-нов.

7. Onward Connections – понякога се налага да се свързвате от един отдалечен сървър на друг, особено когато трябва да прехвърлите файлове без да правите локални копия и да ги транферирате на два етапа. За това използвайте пренасочващия агент със следния ред във вашия .ssh/config:

ForwardAgent yes

8. Faster Connections - Ако сте с бавна Интернет връзка, то тогава можете да направите SSH достъпа си доста по-бърз като компресирате трафика: просто използвайте -C flag при свързване:

$ ssh -C wainwright

9. Avoiding Delays - Ако свързването се осъществява прекалено бавно за определено време, то опитайте да добавите следния ред в config файла:

GSSAPIAuthentication no

Ако това подобри връзката ви, помолете системния администратор да го изключи от сървърния config, в полза на всички потребители – същият ред като по горе, но в /etc/ssh/sshd_config.

10. SSH Tunnels

SSH включва възможност за свързване на портове от локалната ви система с портове на отдалечената такава, така че към приложенията в локалната система, локалния порт да изглежда като нормален, но когато достъпва услугата да старатира в отговор на отдалечената машина. Целият трафик наистина преминава през SSH.

Тази функционалност има многобройни приложения. Чрез нея може да се превъзмогнат ограничения на firewall-a, да се криптира иначе некриптиран трафик, да се осигури достъп до услуги, които в дадена среда са недостъпни и други.

11. SSHFS and SFTP

Обикновенно, мислим за SSH като начин за старатиране на команди или за достъпване на отдалечена машина. Но с помощта на пакета OpenSSH можем да направим много повече, благодарение на множеството полезни функции, които ни очакват зад „shell“ достъпа. Ето и два примера за две такива:

- SSHFS (SSH File System) - Това е програма, която позволява директории на отдалечен сървър да бъдат монтирани в локалната файлова система чрез обикновена SSH връзка. По този начин можем да работим с файлове и папки намиращи се на отдалечения сървър все едно се намират на локалния;

- SFTP, заменящо FTP (който е изместен заради проблеми със сигурността), e сходен инструмент за трансфериране на файлове между две защитени системи (защото работи под SSH) и е също толкова лесен за употреба. Ето защо най-използваните OpenSSH deamons предоставят SFTP достъп по подразбиране.

12. Keep Alive Packets

Това е програма, която позволява директории на отдалечен сървър да бъдат монтирани в локалната файлова система чрез обикновена SSH връзка. По този начин можем да работим с файлове и папки намиращи се на отдалечения сървър все едно се намират на локалния.

Ако известно време не правите нещо със SSH, то по мрежата не се изпращат никакви пакети от данни. Това означава, че ако не използвате активно SSH, има вероятност NAT да възприеме връзката като спряла и да я прекъсне.

Решението на това е, да настроите “ServerAliveInterval [seconds]”в SSH config, така че вашият SSH клиент да изпраща „фиктивни пакети“ на равни интервали от време и така рутера да си мисли, че връзката е активна, дори и ако в действителност тя е затихнала. Готин трик, нали?!

Запазвайки пакетите живи, искаме да запазим още интересни идеи как да направите работата с SSH ефективна, полезна и приятна за следващата статия посветена на SSH. :)

Етикети: #putty #ssh-klyuchove #sshshell-access #ssh-klient #openssh #ssh