Weboldal keresés

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:

  1. 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 *.zip

Amint 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.

  1. 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-File

2. 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 sshd

Windows 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 22

Az 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 -Force

Az 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_keys

Az 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_keys

Az 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 ~/.ssh

2. 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_userkeys

Alá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.pub

2. 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 az id_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 +4w azt 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.pub

Miutá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_keys

2. 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!

Kapcsolódó cikkek