Az OpenSSH beállítása Windows Server rendszeren [Teljes útmutató]
A Secure Shell (SSH) protokoll és az OpenSSH projekt évtizedek óta létezik Linuxon. De az OpenSSH-t Windowson egészen a közelmúltig nem ölelték fel a Windows világában. Mint ilyen, a Windows Server általában nem előre beépített és használatra kész, és némi beállítást igényel.
Ebből az oktatóanyagból megtudhatja, hogyan lehet SSH-t a Windows Serverre ugyanolyan egyszerűen, mint a Linuxon. Megtudhatja, hogyan telepítheti (vagy frissítheti) az OpenSSH-t Windows rendszeren, hogyan adhat hozzá megfelelő tűzfalszabályokat, és hogyan konfigurálhatja a nyilvános kulcsot, jelszót és tanúsítványalapú hitelesítést.
Előfeltételek
A cikkben található példák és bemutatók hatékony követéséhez meg kell felelnie az alábbi követelményeknek.
- Windows Server gép - Ez a cikk a Windows Server 2019 Datacentert fogja használni. Az oktatóanyagban használt kiszolgálónak június nevű felhasználói fiókja lesz, és az IP-címen fog csatlakozni a szerverhez. 40.117.77.227 cím, ataWindows gazdagépnévvel.
- Helyi számítógép, amelyen telepített PowerShell 7.1. A PowerShell 7.1 elérhető Windows, Linux és macOS rendszereken. A cikkben szereplő példák a PowerShell 7.1-et használják Windows 10 rendszerben.
OpenSSH letöltése
A Linux-kiszolgálókkal ellentétben a Windows-kiszolgálókon nem fut készenléti SSH-kiszolgáló. A Microsoft azonban kiadta az OpenSSH nyílt forráskódú portját a Windows számára. Ezzel a kiadással most már beállíthat egy SSH-kiszolgálót egy Windows rendszerű gépen.
A kezdéshez először le kell töltenie az OpenSSH-t. Ehhez kövesse az alábbi lépéseket:
- Csatlakozzon a Windows Server asztalához a Távoli asztal (RDP) vagy az előnyben részesített asztali kezelő kliens használatával.
2. A Windows Server asztalon nyisson meg egy emelt szintű Windows PowerShell-konzolt.
3. Ezután másolja ki az alábbi kódot, illessze be a PowerShell ablakba, és nyomja meg az Enter billentyűt. Ez a szkript letölti a legújabb OpenSSH-kiadást, amely a jelen pillanatban a v8.1.0.0p1-Beta verziót tartalmazza az aktuális munkakönyvtárba.
Ha el szeretné menteni a PowerShell-kódot az OpenSSH letöltéséhez, megnyithat egy kódszerkesztőt, például a Windows PowerShell ISE-t vagy a Visual Studio Code-ot, és elmentheti oda.
## Set network connection protocol to TLS 1.2
## Define the OpenSSH latest release url
$url = 'https://github.com/PowerShell/Win32-OpenSSH/releases/latest/'
## Create a web request to retrieve the latest release download link
$request = [System.Net.WebRequest]::Create($url)
$request.AllowAutoRedirect=$false
$response=$request.GetResponse()
$source = $([String]$response.GetResponseHeader("Location")).Replace('tag','download') + '/OpenSSH-Win64.zip'
## Download the latest OpenSSH for Windows package to the current working directory
$webClient = [System.Net.WebClient]::new()
$webClient.DownloadFile($source, (Get-Location).Path + '\OpenSSH-Win64.zip')4. Az OpenSSH-Win64.zip fájlnak most az aktuális munkakönyvtárában kell lennie. Ellenőrizze ezt az alábbi parancs futtatásával.
Get-ChildItem *.zipAmint alább látható, az OpenSSH-Win64.zip fájl létezik a könyvtárban.
OpenSSH telepítése
Miután letöltötte az OpenSSH-Win64.zip fájlt, a következő lépés az OpenSSH telepítése a szerverre. Nincs telepítő varázsló, ha erre számítasz.
- Még mindig ugyanabban a PowerShell-munkamenetben másolja ki az alábbi kódot, és futtassa a PowerShellben. Ez a kód kibontja az OpenSSH-Win64.zip fájl tartalmát a C:\Program Files\OpenSSH formátumba.
# Extract the ZIP to a temporary location
Expand-Archive -Path .\OpenSSH-Win64.zip -DestinationPath ($env:temp) -Force
# Move the extracted ZIP contents from the temporary location to C:\Program Files\OpenSSH\
Move-Item "$($env:temp)\OpenSSH-Win64" -Destination "C:\Program Files\OpenSSH\" -Force
# Unblock the files in C:\Program Files\OpenSSH\
Get-ChildItem -Path "C:\Program Files\OpenSSH\" | Unblock-File2. A ZIP-fájl kibontása után futtassa az alábbi parancsot a PowerShellben a C:\Program Files\OpenSSH\install-sshd.ps1 szkript végrehajtásához. Ez a szkript telepíti az OpenSSH SSH Server szolgáltatást (sshd) és OpenSSH Authentication Agent szolgáltatás (sshd-agent).
& 'C:\Program Files\OpenSSH\install-sshd.ps1'A várt eredményt alább láthatja.
Az SSH-kiszolgáló automatikus elindulásának biztosításához futtassa az alábbi parancsot a PowerShellben.
## changes the sshd service's startup type from manual to automatic.
Set-Service sshd -StartupType Automatic
## starts the sshd service.
Start-Service sshdWindows tűzfalszabály hozzáadása az SSH-forgalom engedélyezéséhez
Ez az eljárás csak akkor alkalmazható, ha a Windows Server a Windows tűzfalat használja. Harmadik féltől származó tűzfalat használó szerverek esetén tekintse meg a tűzfal dokumentációjában a 22-es port engedélyezését.
Az OpenSSH telepítése nem hoz létre automatikusan tűzfal-kivételi szabályt az SSH-forgalom engedélyezéséhez. Ezért a következő feladata a tűzfalszabály manuális létrehozása.
Új Windows tűzfalszabály létrehozásának egyik legegyszerűbb módja a PowerShell és a New-NetFirewallRule parancsmag. Az alábbi parancs létrehozza az SSH engedélyezése nevű tűzfalszabályt, amely engedélyezi a 22-es portra irányuló összes bejövő TCP-forgalmat.
Másolja ki az alábbi parancsot, és futtassa a PowerShellben.
New-NetFirewallRule -Name sshd -DisplayName 'Allow SSH' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22Az alábbi képernyőképen a tűzfalszabály létrehozása után várt kimenet látható a PowerShellben.
Csatlakozás SSH-hoz jelszóhitelesítés segítségével
Ezen a ponton telepítette az OpenSSH-t Windows rendszeren, és elvégezte a kezdeti kiszolgálókonfigurációt. A következő lépés annak tesztelése, hogy az SSH-n keresztüli csatlakozás valóban működik-e.
Az újonnan konfigurált SSH-kiszolgáló teszteléséhez futtassuk le az ssh parancsot a helyi számítógépen.
Az ebben a szakaszban leírt lépések akkor is érvényesek, amikor egy Linux SSH-kiszolgálóhoz csatlakozik.
1. Ezúttal helyi számítógépéről nyissa meg a PowerShellt.
2. Ezután futtassa az alábbi parancsot az SSH bejelentkezési folyamat elindításához. Ügyeljen arra, hogy módosítsa a Windows Server felhasználónevét és távoli gazdagépét.
ssh [email 3. Mivel először csatlakozik a szerverhez, megjelenik egy felszólítás, amely szerint a gazdagép hitelessége nem állapítható meg. Az üzenet azt jelenti, hogy a számítógép még nem ismeri fel a távoli gazdagépet. Írja be az yes kifejezést, és nyomja meg az Enter billentyűt a folytatáshoz.
4. Amikor a rendszer kéri a jelszót, írja be fiókja jelszavát, és nyomja meg az enter billentyűt.
5. A bejelentkezés után, ahogy az alábbi képernyőképen is látható, a távoli gazdagép parancssorába érkezik. Tegyük fel, hogy meg szeretné erősíteni, hogy a távoli gazdagépen lépett be a munkamenetbe. Ehhez írja be a hostname kifejezést, és nyomja meg az Enter billentyűt. A parancsnak vissza kell adnia a távoli számítógép nevét.
Az OpenSSH alapértelmezett shelljének módosítása PowerShellre
Amikor először jelentkezett be a Windows SSH-kiszolgálóra, észre fogja venni, hogy az alapértelmezett shell vagy parancsértelmező a CMD. Ha a CMD-t alapértelmezett SSH-héjként kívánja használni, akkor kövesse ezeket a lépéseket, ha inkább a PowerShell-t szeretné alapértelmezettként használni.
Az alapértelmezett OpenSSH shell módosítása CMD-ről PowerShellre:
Először nyisson meg egy emelt szintű PowerShell-ablakot a Windows Serveren, ha még nincs nyitva.
Ezután hozzon létre egy új beállításjegyzék-karakterlánc értéket DefaultShell néven a HKLM:\SOFTWARE\OpenSSH beállításkulcsban. Állítsa be a DefaultShell karakterláncot a Windows értékre. PowerShell elérési útja: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe.
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -ForceAz alábbi képernyőkép a parancs várható eredményét mutatja.
A nyilvános kulcsú hitelesítés konfigurálása
Az előző szakaszokban felhasználónévvel és jelszóval csatlakozott. ez működik, de az SSH-kiszolgálóval való hitelesítés biztonságosabb módja a kulcspár használata.
Dióhéjban, egy kulcspár két kulcsból áll, amelyeket nyilvános kulcsnak és privát kulcsnak neveznek, amelyek az Ön személyazonosságának igazolására szolgáló biztonsági hitelesítő adatok halmazát alkotják.
A nyilvános kulcsot a szerver tárolja, míg a privát kulcs a helyi számítógépen marad. A privát kulcsot úgy kell kezelnie, mint a jelszavát. Ha a privát kulcsot feltörték, bárki hozzáférhet vele az SSH-kiszolgálóhoz.
Az administrators_authorized_keys fájl előkészítése
A nyilvános kulcsoknak a szerveren kell lenniük. De hol? Windows rendszeren futó OpenSSH esetén az SSH-kiszolgáló beolvassa a nyilvános kulcsokat a C:\ProgramData\ssh\administrators_authorized_keys fájlból. De ez a fájl alapértelmezés szerint nem létezik. Először létre kell hoznia egyet.
Kövesse az alábbi lépéseket az administrators_authorized_keys fájl létrehozásához és a megfelelő access control list (ACL) beállításához.
A Windows Serveren:
1. Nyisson meg egy emelt szintű Windows PowerShell-konzolt, ha még nem.
2. Másolja ki az alábbi parancsot, és futtassa a PowerShellben. Ez a parancs létrehozza az administrators_authorized_keys fájlt az New-Item parancsmag használatával.
New-Item -Type File -Path C:\ProgramData\ssh\administrators_authorized_keysAz alábbi képernyőképhez hasonló eredményt kell látnia.
3. Ezután szerezze be az ssh_host_dsa_key fájlhoz jelenleg rendelt ACL-t, és másolja azt az administrators_authorized_keys fájlba. Ehhez futtassa az alábbi parancsot.
get-acl C:\ProgramData\ssh\ssh_host_dsa_key | set-acl C:\ProgramData\ssh\administrators_authorized_keysAz OpenSSH szolgáltatás megköveteli, hogy csak az Rendszergazdák csoport és a SYSTEM fiók férhessen hozzá az administrators_authorized_keys fájlhoz. Az ssh_host_dsa_key ACL-jének az administrators_authorized_keys könyvtárba másolása pedig logikus, mert az ACL már be van állítva.
4. Most nyissa meg a Windows Intézőt.
5. Keresse meg a C:\ProgramData\ssh\ mappát.
6. Kattintson jobb gombbal az administrators_authorized_keys fájlra, majd kattintson a Tulajdonságok lehetőségre.
7. A tulajdonságok oldalon kattintson a Biztonság lapra, majd a Speciális lehetőségre.
8. Ezután ellenőrizze, hogy az engedélyek megfelelnek-e az alábbi képen láthatónak.
Új SSH kulcspár generálása
Új SSH-kulcspár létrehozásához használja az ssh-keygen parancsot, amely a Windows 10 (és újabb) és a legtöbb Linux operációs rendszerbe beépített OpenSSH-ügyféleszközök része.
Az ebben a részben bemutatott példa Windows és Linux rendszerű számítógépeken is működik.
A helyi számítógépen, egy PowerShell-konzolon:
1. Az alábbi parancs futtatásával lépjen a saját mappája .ssh könyvtárába.
cd ~/.ssh2. Ezután írja be az ssh-keygen parancsot, és nyomja meg az Enter billentyűt. Amikor a rendszer kéri, hogy adja meg a fájl helyét a generált kulcs mentéséhez, tartsa meg az alapértelmezett helyet, és nyomja meg az Enter billentyűt. Ezzel lehetővé teszi az SSH-ügyfél számára, hogy megtalálja az SSH-kulcsokat az automatikus hitelesítés során.
Windows rendszerben az alapértelmezett kulcsfájl a C:\Users\
\.ssh\id_rsa.
3. A következő felszólításnál hagyja üresen a jelszót. Ezen a ponton nem kell jelszót használni a teszteléshez.
Ha jelszót ad hozzá a privát kulcshoz, jelentősen megnöveli annak biztonságát. A jelszó második tényezős hitelesítésként (2FA) működik a privát kulcshoz.
Észre fogja venni, hogy a parancs két fájlt hozott létre; id_rsa (privát kulcs) és id_rsa.pub (nyilvános kulcs).
A nyilvános kulcs telepítése a Windows SSH-kiszolgálón
Most, hogy létrehozta a privát-nyilvános kulcspárt, a következő lépés a nyilvános kulcs átmásolása az SSH-kiszolgálón lévő C:\ProgramData\ssh\administrators_authorized_keys fájlba.
A helyi számítógépen, egy PowerShell-konzolon:
1. Másolja ki az alábbi kódot, és futtassa a PowerShellben. Először mindenképpen módosítsa a felhasználónevet és az IP-címet. Az egyes parancsok feletti megjegyzésből megtudhatja, hogy az egyes parancsok mit csinálnak.
# Read the public key
$public_key = Get-Content ~/.ssh/id_rsa.pub
# Append the public key to the administrators_authorized_keys on the server using ssh.
ssh [email "'$($public_key)' | Out-File C:\ProgramData\ssh\administrators_authorized_keys -Encoding UTF8 -Append"2. Amikor a rendszer kéri, adja meg jelszavát, és az ssh folytatja a nyilvános kulcs másolását. Hasonló eredményt fog látni, az alábbiak szerint.
Csatlakozás SSH-hoz nyilvános kulcsú hitelesítés használatával
Most, hogy átmásolta nyilvános kulcsát az SSH-kiszolgálóra, többé nem kell jelszót használnia a hitelesítéshez. Amint alább látható, az ssh nem kért jelszót.
Tanúsítvány hitelesítés konfigurálása
A nyilvános kulcsú hitelesítéshez hasonlóan a tanúsítványhitelesítés is jelszó nélküli vagy jelmondat-védett. A tanúsítvány bejelentkezés engedélyezéséhez kövesse ugyanazt az eljárást, amely kulcspárt generál anélkül, hogy a nyilvános kulcsot telepítené az SSH-kiszolgálóra.
Nem kell hozzárendelnie a nyilvános kulcsot az SSH-kiszolgálón található authorised_keys vagy administrators_authorized_keys fájlokhoz. Ehelyett a nyilvános kulcsot egy hitelesítésszolgáltató (CA) kulcs segítségével írják alá.
A tanúsító hatóság (CA) kulcsának létrehozása
A CA-kulcsok aláíráshoz való előállítása hasonló a jelen cikkben korábban elvégzett felhasználói kulcspár létrehozásához. Csak ezúttal meg kell adnia egy fájlnevet az új CA-kulcsokhoz. Ehhez a Windows Serveren egy PowerShell-konzolon:
Hajtsa végre az ssh-keygen parancsot az alábbiak szerint. Ez a parancs létrehozza a CA-kulcsot a C:\ProgramData\ssh\ca_userkeys mappában, de nyugodtan használjon más fájlnevet. Más fájlnév használata nem befolyásolja a CA-kulcs funkcióit.
Amikor jelszót kérnek, hagyja üresen, és nyomja meg az Enter billentyűt.
ssh-keygen -f C:\ProgramData\ssh\ca_userkeysAlább látható, hogy a parancs két fájlt hozott létre. ca_userkeys, amely a privát kulcs, és ca_userkeys.pub,, amely a nyilvános kulcs.
Most, hogy létrehozta a CA-kulcsokat, mondja meg az SSH-kiszolgálónak, hogy bízzon a CA-ban, és hogy hol található a CA-kulcs. Ehhez adjon hozzá egy új TrustedUserCAKeys path/to/ca_userkeys.pub sort a C:\ProgramData\ssh\sshd_config fájlhoz a kiszolgálón.
Futtassa az alábbi parancsokat a konfigurációs elem hozzáfűzéséhez az sshd_config fájlban.
# If the SSH server is Windows
echo TrustedUserCAKeys C:\ProgramData\ssh\ca_userkeys.pub>> C:\ProgramData\ssh\sshd_config
A Felhasználó nyilvános kulcsának aláírása
Ezen a ponton létrehozta a CA-kulcsokat, és úgy konfigurálta az SSH-kiszolgálót, hogy megbízzon a CA nyilvános kulcsfájljában. Most már csak alá kell írnia a felhasználói nyilvános kulcsát.
A helyi számítógépen, egy PowerShell-konzolon:
1. Másolja az id_rsa.pub fájlt otthoni meghajtójára az SSH-kiszolgálón az SCP paranccsal. Ügyeljen arra, hogy a felhasználónevet és az IP-címet a megfelelő értékekre változtassa.
scp ((Resolve-Path ~/.ssh/id_rsa.pub).Path) [email :id_rsa.pub2. Jelentkezzen be a Windows Server kiszolgálóra az ssh használatával. Miután bejelentkezett, futtassa az ssh-keygen parancsot a felhasználó nyilvános kulcsának aláírásához. Észre fogja venni, hogy az alábbi parancs több paramétert is használt. Bontsuk le őket.
-s C:\ProgramData\ssh\ca_userkeys- adja meg a CA-kulcs helyét a nyilvános kulcs aláírásához. Ebben a példában a CA-kulcs az Ön által generált kulcs.-I id_username- adja meg az aláírt felhasználói nyilvános kulcshoz rendelni kívánt azonosítót. Módosítsa azid_usernameértéket tetszőleges névre.-V +4w- ez a paraméter határozza meg az aláírt kulcs érvényességi idejét. Ebben a példában a+4wazt jelenti, hogy az aláírt felhasználói kulcs négy hétig lesz érvényes. Ezt az értéket módosíthatja a kívánt érvényességi időszakra.-n felhasználónév- ez az a felhasználónév, akinek az aláírt nyilvános kulcsa lesz.- ez a felhasználó nyilvános kulcsának aláírási helye (Windows).
ssh-keygen -s C:\ProgramData\ssh\ca_userkeys -I id_username -V +4w -n username ~/id_rsa.pubMiután futtatta a parancsot az SSH-munkamenetben, hasonló kimenetet kell kapnia, az alábbiak szerint. Amint láthatja, a parancs létrehozta az id_rsa-cert.pub nevű új fájlt, amely az aláírt felhasználói tanúsítvány.
3. Most lépjen vissza a helyi számítógép PowerShell-munkamenetéhez, és másolja az id_rsa-cert.pub fájlt a szerverről a helyi számítógépére. A parancs futtatása előtt módosítsa a felhasználónevet és az IP-címet a megfelelő értékekre.
scp [email :id_rsa-cert.pub ((Resolve-Path ~/.ssh/).Path)A másolás befejezése után az aláírt felhasználói tanúsítványt a saját mappájában találja, az alábbiak szerint.
Csatlakozás SSH-hoz tanúsítványhitelesítés használatával
Beállította a tanúsítvány-hitelesítést, és most megvan a felhasználói tanúsítványa. Most tesztelje, hogy csatlakozhat-e az SSH-kiszolgálóhoz tanúsítványhitelesítéssel.
Az SSH-hoz tanúsítvánnyal történő csatlakozás parancsa ugyanaz, mint jelszó vagy nyilvános kulcs használata. De ha korábban engedélyezte a nyilvános kulcsú hitelesítést, először tiltsa le. Ellenkező esetben az ssh továbbra is az Ön kulcspárját fogja használni a tanúsítvány helyett.
A kulcspár letiltásához távolítsa el nyilvános kulcsát az administrators_authorized_keys fájlból. Ehhez kövesse az alábbi lépéseket.
Ne feledje, hogy a következő parancsok kiürítik a teljes administrators_authorized_keys fájlt, hatékonyan eltávolítva az összes hozzárendelt nyilvános kulcsot. Ha nem szeretné törölni az összes hozzárendelt nyilvános kulcsot, egy szövegszerkesztővel távolítsa el manuálisan a kiválasztott nyilvános kulcsokat az egyes fájlokból.
Miközben az SSH bekerült a Windows Serverbe:
1. Futtassa az alábbi kódot a PowerShellben az administrators_authorized_keys fájl kiürítéséhez.
# Clear the administrators_authorized_keys file
$NULL > C:\ProgramData\ssh\administrators_authorized_keys
# Confirm that the administrators_authorized_keys is empty
Get-Content C:\ProgramData\ssh\administrators_authorized_keys2. Ezen a ponton az authorised_keys és az administrators_authorized_keys fájlok üresek, ahogy az alábbi képernyőképen is látható.
3. Írja be az exit parancsot, és nyomja meg az Enter billentyűt az SSH-munkamenetről való leválasztáshoz. Visszatér a PowerShell-munkamenethez.
4. A nyilvános kulcsok eltávolítása után a következő ssh bejelentkezési kísérlet tanúsítványhitelesítést használ. A bejelentkezési élmény megegyezik a nyilvános kulcsú hitelesítéssel.
Következtetés
Most már az alapoktól kezdve beállított egy OpenSSH Windows Servert, egészen a különféle hitelesítési módok feltárásáig és beállításáig. Mostantól pontosan úgy csatlakozhat a Windows szervereihez, mint a Linuxhoz!
















