Предполагам, че когато се каже SSH, повечето от вас се сещат на първо четене за PuTTY / KiTTY. Това, което е малко известно обаче е, че от Windows 10 build 1809 и следващите издания (вкл. Windows 11) са добавени като компоненти SSH клиент и сървър (портове на OpenSSH за Windows).
За целта на този урок ще трябват няколко неща:
- OpenSSH клиента на Windows
- Windows Terminal
1. Инсталиране на Windows Terminal
Windows Terminal се инсталира от магазина на Windows (Microsoft Store).
2. Инсталиране на OpenSSH клиента
Инсталацията може да стане по два начина:
- От компонентите на Windows - отваряте Settings, оттам Apps / Apps & Fetures, оттам линка Optional features, оттам Add a feature. Пишете в търсачката OpenSSH Client, маркирате го и натискате долу Install.
- Последната версия от GitHub (9.8.1.0p1-Preview към момента) - сваляте .msi файла, отговарящ на версията на Windows (32 или 64 бита) и инсталирате.
Няколко неща, които трябва да имате в предвид за втория начин:
- Този пакет инсталира OpenSSH клиента и сървъра едновременно. Тъй като на този етап пакета няма потребителски интерфейс и всичко се случва "мълчаливо", за да се инсталира само клиента е необходимо да се изпълни през командния ред (стартиран като администратор):
msiexec /i <пътя до .msi файла> ADDLOCAL=Client
- Тази инсталация на този етап НЕ добавя автоматично пътя до клиента в променливата PATH, което трябва да направите ръчно. Десен бутон на менюто Start, там избирате System, след това линка Advanced System Settings. В прозорчето натискате най-долу бутона Environment Variables, след което намирате Path в долния списък System Variables, натискате Edit, след това Browse,избирате пътя (C:\Program Files\OpenSSH или C:\Program Files (x86)\OpenSSH), след което OK във всички отворени прозорци.
3. Настройка на OpenSSH клиента
Почти всички необходими параметри, които са необходими на OpenSSH, могат да се задават от командния ред, но за целта на този урок (която е колкото се може по-малко работа с конзолата) това не е от особена полза. OpenSSH поддържа конфигурация във файл, която позволява да се правят нещо подобно на профили за всяка отделна SSH връзка.
Местонахождението на потребителската конфигурация на OpenSSH е C:\Users\<Потребител>\.ssh\config.
.ssh е папка, config е текстов файл. Ако ги нямате, ги създавате.
Ето извадка от моя config файл:
Host buildroot HostName 192.168.0.111 Port 222 User philip IdentityFile ~/.ssh/buildroot.ssh
- Host е името, което ще се подава на командата ssh.
- HostName e адреса на сървъра.
- Port е номера на порта, на който работи SSH услугата. Този параметър не е необходим, когато порта е 22 (порта за SSH по подразбиране).
- User e потребителя, с който ще се оторизирате на сървъра отсреща.
Само с първите три реда е достатъчно да се ползва команда е терминала:
ssh buildroot
за да се осъществи връзка, като ще има питане за потребител и парола. Питането за потребител може да се прескочи или чрез настройка на User в профила, или когато командата е:
ssh philip@buildroot
- IdentityFile се ползва единствено в случаите, когато удостоверяването става в двойка публичен/частен ключ, което в днешно време е препоръчителния метод за SSH оторизация. В този пример, частния ключ се намира в същата папка, където е файла config и принципно е препоръчително всички ключове да се държат в тази папка.
Файловете с ключовете трябва да са в OpenSSH формат. ppk ключовете на PuTTY / KiTTY не работят с OpenSSH, но можете да ползвате примерно puttygen (от сайта на PuTTY) за да ги конвертирате от единия формат в другия.
config НЕ поддържа параметър за предварително задаване на парола за потребител по обясними причини - съхранение на парола в текстов файл си е никаква защита.
Пълният списък с параметри, които могат да се ползват за даден SSH профил можете да видите тук:
4. Добавяне на SSH профил във Windows Terminal
Отваряте Windows Terminal, има една стрелка надолу горе до бутона с +. Там е менюто, от което избирате Settings, там Add a new profile :
След избор на New empty profile най-горе, ще видите това:
Необходимите полета, които се попълват са:
- Name - име на профила, което ще излиза в списъка.
- Command line - променя се по примера от config файла горе на:
ssh buildroot
Запазвате със Save, след което от менюто на Windows Terminal горе вече можете да избирате тази сесия: