OpenSSH — відкрита реалізація клієнта і сервера для роботи за протоколами SSH та SFTP, набір програм, що надають шифрування сеансів зв'язку у комп'ютерних мережах. Він був створений під керівництвом Teo де Раадта як відкрита альтернатива власницькій реалізації від SSH Communications Security.

OpenSSH

"Don't tell anyone that I'm free"
Тип віддалений доступ
Розробник проект OpenBSD
Стабільний випуск 7.4 (20 грудня 2016; 7 років тому (2016-12-20))
Операційна система крос-платформовий
Мова програмування C[1]
Стан розробки активний
Ліцензія спрощена ліцензія BSD
Репозиторій anongit.mindrot.org/openssh.git
Вебсайт www.openssh.com

Історія ред.

OpenSSH був створений командою OpenBSD як альтернатива SSH, який досі є власницьким програмним забезпеченням. Розробники OpenSSH стверджують, що він безпечніший за оригінальний Secure Shell, завдяки їхній політиці чищення та аудиту коду. Хоча сирцевий код також тривалий час був доступний для оригінального SSH, обмеження його ліцензії спочатку робили OpenSSH привабливішим проектом для більшості програмістів.

OpenSSH вперше з'явився в OpenBSD 2.6.

У версії 5.9, котра вийшла 6 вересня 2011, з'явився експериментальний режим «пісочниці», з обмеженням на певні системні виклики . Мета цього — запобігання атаки на інші вузли мережі, наприклад, за допомогою запуску проксі або відкриття сокетів.

Торгові марки ред.

У лютому 2001 Тату Ілонен (фін. Tatu Ylönen), голова та технічний директор SSH Communications Security, повідомив через поштову розсилку OpenSSH, що після спілкування з провідними розробниками OpenSSH компанія затвердила право власності на торгові марки «SSH» і «Secure Shell». Він також шукав можливості змінити назву протоколу на SecSH або secsh і запропонував змінити ім'я OpenSSH для уникнення судових позовів.

У той же час «SSH», «Secure Shell» і «ssh» були використані в документах, що визначають протокол як відкритий стандарт і було виконано багато роботи без належності до торгових марок. Були висловлені сумніви в правильності претензій, адже пройшло вже 6 років з створення компанії і тим моментом, коли вона почала захищати торгову марку від вільних альтернатив, начебто OpenSSH, і що тільки OpenSSH піддався їхнім судовим нападкам.

Обидва розробника OpenSSH та Ілонен були членами робочої групи IETF, що розробляє нові стандарти, які після невеликого обговорення відкинула будь-які домагання Ілонена на перейменування протоколу, посилаючись на те, що це створить небажаний прецедент для інших торгових марок. Члени робочої групи стверджували, що позначення «Secure Shell» і «SSH» є базовими поняттями і не можуть бути торговими марками.

Переносимість ред.

Частково тому, що OpenSSH необхідно виконувати автентифікацію, виконання якої може сильно відрізнятися на різних операційних системах, була створена потужна інфраструктура для забезпечення переносимості. Те, що не включалося безпосередньо в OpenBSD, було виділено окремо групою розробників в складі Дамієна Міллера (англ. Damien Miller), Філіпа Гендса (англ. Philip Hands) та інших як субпроект OpenSSH Portable. Тепер паралельно і одночасно з релізом OpenSSH «для OpenBSD» стали випускатися так звані «portable releases». Ці релізи позначаються в кінці буквою «p», наприклад: OpenSSH_5.1p1. Така організація процесу розробки пізніше стала використовуватися і в інших проектах, що розробляються всередині OpenBSD, наприклад, OpenNTPD.

Склад ред.

Набір OpenSSH містить такі компоненти:

ssh
Заміна для rlogin і telnet
scp
Заміна для rcp, що використовує в сучасних версіях OpenSSH протокол SFTP (раніше використовувався менш надійний і гнучкий SCP)
sftp
Заміна для FTP-клієнта, що використовує протокол SFTP
sshd
Демон, власне надає захищений доступ до ресурсів. Включає реалізацію серверної частини SFTP, придатну для організації chroot-доступу для користувачів без необхідності копіювання будь-яких файлів всередину chroot
sftp-server
Окрема реалізація підсистеми SFTP, серверна частина. Має більші можливості, ніж вбудована в sshd.
ssh-keygen
Генератор пар ключів
ssh-keysign
Утиліта для перевірки ключів хостів. Задіюється при використанні автентифікації по хостам (аналогічно rsh) замість проведеної за умовчанням автентифікації по користувачам.
ssh-keyscan
Допоміжна утиліта, дозволяє збирати публічні ключі з інших хостів
ssh-agent
Допоміжна утиліта, яка підтримує кеш закритих ключів. Кешування дозволяє уникати частого введення пароля для розшифровки ключів перед їхнім використанням
ssh-add
Допоміжна утиліта, додає ключі в кеш ssh-agent

Безпечні тунелі ред.

Перенаправлення портів ред.

Більшість програм для встановлення з'єднання використовують протокол TCP, трафік якого можна передавати через безпечний тунель. Таким чином можна встановлювати безліч додаткових TCP-з'єднань поверх одного SSH-з'єднання. Це зручно для приховування з'єднань і шифрування протоколів, які є небезпечними, а також для обходу обмежень фаєрволів . UDP-з'єднання іноді теж можливо тунелювати за допомогою додаткових програм, таких як netcat. Простими для тунелювання є такі протоколи як, наприклад, HTTP, POP3 і VNC.

Перенаправлення портів можливо в будь-яку сторону.

Крім того, деяке програмне забезпечення може автоматично використовувати OpenSSH для створення тунелю. Наприклад DistCC, CVS, rsync, fetchmail.

З протоколів, які складніше тунелювати, варто відзначити FTP, який часто можна замінити SFTP, і SMB. У деяких операційних системах віддалені файлові системи можна монтувати через ssh використовуючи shfs, lufs та інші аналогічні компоненти.

X Window System ред.

OpenSSH дозволяє безпечно організовувати підключення до X Window System з урахуванням «перевороту» семантики: хост-клієнт SSH для X Window System є сервером, і навпаки. Для цього OpenSSH здійснює додаткові операції начебто установки змінної оточення DISPLAY.

SOCKS ред.

OpenSSH можливо використовувати як спеціальний SOCKS-проксі-сервер, котрий підтримує гнучкіше проксіювання, ніж просто перенаправлення портів.

VPN ред.

Починаючи з версії 4.3, OpenSSH може використовувати тунельні мережеві інтерфейси 2-го і 3-го рівнів моделі OSI (tun). Таким чином можна організувати захищену VPN і обійтися без необхідності переробки застосунків для підтримки SOCKS.

Автентифікація ред.

OpenSSH сервер може автентифікувати користувачів, використовуючи такі вбудовані механізми автентифікації:

  • Публічні ключі,
  • Клавіатурний ввід (паролі і запит-відповідь),
  • Kerberos / GSS-API.

На додаток OpenSSH Portable зазвичай може використовувати методи автентифікації, доступні в конкретній операційній системі, наприклад, BSD Authentication або PAM.

Джерела ред.

Посилання ред.

  1. https://www.openhub.net/p/openssh/analyses/latest/languages_summary