Wikiversity

The Secure Shell
Информация
SSH в Общомедия

SSH (на английски: Secure SHell – сигурна обвивка) е мрежов протокол, позволяващ криптирано предаване на данни. Разработен е от SSH Communications Security Ltd. Най-често се използва за изпълняване на команди на отдалечена машина, прехвърляне на файлове от една машина на друга и самото ѝ менажиране. Предоставя високо ниво на автентификация и сигурност по време на комуникацията между машините през незащитена връзка. Проектиран е да замести подобни протоколи, като например TELNET, rsh и rexec на Бъркли, rlogin, rcp, rdist.

Всеки път, когато от компютър се изпращат данни към мрежата, SSH автоматично ги криптира. След получаването им от крайния потребител, SSH отново автоматично ги декриптира. Този процес се нарича прозрачно криптиране (на английски: transparent encryption). Така потребителите могат да работят нормално, без да подозират, че техните съобщения се криптират, и така да ползват безопасно мрежата.

SSH използва клиент/сървър архитектура. На сървъра се инсталира SSH програма от системния администратор, която приема или отхвърля изпратените заявки от SSH клиент до самата нея. Всички заявки между клиента и сървъра са сигурно криптирани, за да не могат да бъдат модифицирани.

SSH може да бъде използван от машини с различна операционна система, като Windows, Unix, Macintonsh и OS/2.

История на SSH

SSH1 протоколът е разработен през 1995 от Тату Юльонен (на фински: Tatu Ylönen), изследовател в Техническия университет в Хелзинки, Финландия. След атака над университетската мрежа по-късно същата година, той решава да създаде SSH1 за лично ползване. Бета версията привлича огромен интерес и той решава, че може да се приложи неговия проект в по-мащабни размери.

През юли 1995, SSH1 е пуснат заедно с кода си за свободно разпространяване. До края на годината над 20 000 потребители от 50 държави използват SSH1. Юльонен получавал над 150 писма над ден с искане за помощ, като в отговор на този интерес той основава SSH Communications Security Corp.. Днес той е член на управителния съвет и технически съветник на компанията.

SSH1 протоколът имал някои недостатъци и ограничения и за това през 1996 е представен SSH2, който включвал нови алгоритми, но бил несъвместим със SSH1. Това било предпоставка за създаването на SECSH за стандартизиране на протокола и насочване на развитието му в полза на обществото. Въпреки това SSH2 не успява да замени напълно SSH1 – липсвали някои от възможностите при SSH1 и лицензът му за ползване бил по-ограничен. Това довело до по-слаба миграция на потребителите към SSH2 от SSH1, въпреки че е по-сигурен и по-добър протокол.

Появява се и OpenSSH, който представлява свободна реализация на SSH2 протокола, от OpenBSD проекта. Базиран е на последната свободна версия на SSH. Развива се бързо и става една от предпочитаните SSH реализации в света. Въпреки че много хора участват по този проект, най-голям принос има Маркус Фрийл (на английски: Markus Friel). Успява да бъде интегриран успешно за Linux, Solaris, AIX, MAC OS X и други операционни системи.

Днешно време има десетки SSH реализации, както безплатни, така и платени за почти всички платформи. Използва се от милиони хора за осигуряване на тяхната сигурност при комуникация.

Архитектура на SSH

Сървър:

Програма, която позволява SSH връзка до машината, включваща автентикация и оторизация. В повечето Unix SSH реализации, сървъра е sshd.

Клиент

Програма, която се свързва до SSH сървъра и изпълнява заявки, като например оторизирай ме или копирай определен файл. Основни клиенти са ssh, scp и sftp.

Сесия

Това е връзката между клиент и сървър. Осъществява се на следните етапи: започва с успешна оторизация на клиента пред сървъра и свършва с приключването на връзката. Сесията може да бъде интерактивна (постоянна) или на партиди (на части).

Ключ

Малка част от информация, главно от 10 до 2, 000 бита, която се използва, като параметър за криптиране. Ключът се използва от алгоритъм, който гарантира, че този ключ ще има само един потребител, който да може да го приеме и декриптира. Има два вида ключове: секретен и публичен. Публичният ключ има два компонента: публичен и частен.
Име Времетраене Създаден от Тип Предназначение
Потребителски ключ Постоянен Потребител Публичен Идентифициране на потребител пред сървър
Хост ключ Постоянен Администратор Публичен Идентифициране на сървър
Сесиен ключ Една сесия Клиент (и сървър) Секретен Защитена комуникация

Потребителски ключ

Постоянен, публичен ключ използван от клиента за потребителска идентификация. Един потребител може да има няколко ключа.

Хост ключ

Отново постоянен, публичен ключ използван от сървъра за идентификация, също както и клиента се идентифицира, така и хоста е част от хост-базирана автентикация. Ако дадена машина управлява един SSH сървър, то хост ключа също е уникален идентификатор за машината. Ако една машина управлява повече от един SSH сървъра, то всеки трябва да има различен хост ключ или да използват споделен такъв.

Сесиен ключ

Случайно генериран, секретен ключ за криптиране на комуникацията между SSH клиент и сървър. Той е разделен на две части по време на осъществяване на SSH връзката, като по този начин не може да бъде открит. И двете страни имат този сесиен ключ и го използват за криптиране на комуникацията. Всяка SSH връзка има няколко сесийния ключа за всяка страна (клиент-сървър и сървър-клиент), като всяка има ключ за криптиране и няколко ключа за проверка. Приема се, че се говори за един сесиен ключ, който включва горе споменатите такива, понеже всички произхождат от един главен секретен ключ. След края на SSH сесията, сесийния ключ се унищожава.

Генератор на ключове

Програма, която създава постоянни ключове използвани, както от потребител, така и от хоста за SSH. OpenSSh разполага с програмата ssh-keygen.

Хост база данни

Колекция от хост ключове, от които клиент и сървър се оторизират един друг.

Агент

Програма, която кешира потребителските ключове в паметта, като така не е нужно потребителите да ги въвеждат отново. Агентът отговаря за заявките в които е нужно въвеждане на ключа, като например искане за оторизация. OpenSSH има такъв агент ssh-agent и програмата ssh-add зарежда или чисти от паметта, която отговаря за кешираните ключове.

Подпис

Програма, която подписва хост-базата за всеки оторизиращ пакет.

Конфигурационен файл

Набор от настройки за определяне на състоянието на SSH клиент или сървър.

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

SSH Опции

Примерна част от опциите при OpenSSH.

Опция Значение
-1 Използва само SSH-1 протокол
-2 Използва само SSH-2 протокол
-4 Използва само IPv4 адрес
-6 Използва само IPv6 адрес
Изключване на препращане от агент
-b bind_address Избиране на мрежов интерфейс
-A Включване на препращане от агент
-c cipher Избиране на криптиращ шифър
-C Включване на компресия
-D port Създаване на препращащ динамичен порт
-e character Създаване на освобождаващ символ
-F filename Използване на друг конфигурационен файл
-i filename Избиране на идентифициращ файл
-L username Резервно потребителско име
-L port1:host2: port2 Локален препращащ порт
-m algorithm Избиране на MAC алгоритъм
-M Да не се изпълняват отдалечени команди
-n Пренасочване на stdin от /dev/null
-p port Избиране на TCP порт
-P Използване на непривилегирован порт
-s subsystem Извикване на отдалечена подсистема
-q Тих режим

SSH и PuTTY

Инструкции стъпка по стъпка за първо ползване на SSH и PuTTY:

1. Изтеглете PuTTY.

2. След стартирането му ще се отвори прозорец, в който ще се въвеждат настойките за осъществяване на връзка.

  • Host Name: example.com
  • Port: 22 (по подразбиране)
  • Connection Type: SSH (по подразбиране)

3. Натиснете „Open“ за осъществяване на връзката.

4. При първо осъществяване на връзка ще се появи предупредителен прозорец „PuTTY Security Alert“ – приемете.

5. Въведете потребителско име (example.com) и парола.

6. Вече сте логнати на сървъра посредством SSH и би трябвало да се появи подобно съобщение:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
example.com@n11:~$

Основни команди

Команда Действие
cd example_dir Промяна на директорията
cd ~ Връщане в главната директория
cd - Връщане в последната директория в която сте били
cd .. Връщане една директория нагоре в йерархията
pwd Показване на пълния път до текущата директория
ls Показване в дървовиден вид на файлове/директории в текущата директория
ls *.php Показва списък с файлове с такова разширение
ls -alh Показване на пълна информация за файл/директория с нейния размер
exit Изход от SSH клиента
cp [filename] [new filename] Преименуване на файл
cp banner.jpg folder/banner.jpg Копиране на файл в папка folder
cp banner.jpg folder/banner728px.jpg Копиране на файл в папка folder с ново име
mv banner.jpg folder/banner.jpg Преместване на файл в папка folder
mv banner.jpg folder/banner728px.jpg Преместване на файл в папка folder с ново име
rm banner.jpg Изтриване на файл
rm * Изтриване на всички файлове в текущата директория
rm *.php Изтриване на файлове с такова разширение
cp -r [directory] [new directory] Копиране на директория с всички включващи файлове и папки
mkdir [folder_name] Създаване на папка с име folder_name
find . -name [sun] -print Търсене на файл с име sun в текущата директория
grep [apple] [fruits] Търсене на текст в apple във файл fruits
chmod [permission type] [file/folder] Промяна на права на файл/папка

Приложения на SSH

  • посредством SSH клиент, може да се осъществява отдалечена администрация на компютър с инсталиран SSH сървър. Това става през терминална конзола (в текстов режим).
  • в комбинация с SFTP, като алтернатива на FTP осигуряваща сигурност, която може да се инсталира по-лесно в малки мащаби без инфраструктура с публичен ключ и Х.509 сертификати.
  • в комбинация с SCP, като алтернатива на RCP пренос на файлове – по-често използван в Unix среди.
  • за пренасочване на портове или тунелинг, често като алтернатива на пълнофункционалния VPN. В този случай (незащитена) TCP/IP връзка на външно приложение се пренасочва към SSH програмата (клиент или сървър), която на свой ред пренасочва връзката към желаната машина (хост). Пренасочената връзка е криптирана и защитена само по пътя между SSH клиента и сървъра. Приложенията на SSH пренасочване на портове включва достъп до сървъри с бази данни, сървъри за електронна поща, защита на връзките през Х11, VNC и отдалечения работен плот на Windows и дори пренасочване на споделянето на файлове на Windows.

Източници

1. SSH The Secure Shell: The Definitive Guide by Daniel J. Barrett, Richard E. Silverman, and Robert G. Byrnes[неработеща препратка]

Външни препратки

1. SSH Протоколи
2. SSH Communications Security