−25%

la planurile Windows anuale, până pe 31 oct. Vezi planurile

EQVPS
Începe

Cum instalezi OpenSSH Server pe Windows Server 2022 (autentificare cu cheie, shell PowerShell)

Instalează OpenSSH Server-ul integrat pe un VPS cu Windows Server 2022, fă din PowerShell shell-ul implicit, autentifică-te cu cheie ca Administrator și dezactivează autentificarea cu parolă. Cu cele două capcane Windows care fac autentificarea cu cheie să eșueze.

Windows Server 2022 include OpenSSH Server ca funcție opțională: fără program de instalare terț, cu actualizări prin Windows Update. Odată activ, rulezi PowerShell prin SSH, copiezi fișiere cu scp și îndrepți scripturi sau CI spre server ca spre orice mașină Linux.

Tot ce urmează am făcut pe imaginea noastră Windows Server 2022, într-un PowerShell cu drepturi de administrator prin RDP (cum te conectezi).

Mai întâi, rețeaua. Pe un plan Windows cu NAT, singura redirecționare de intrare merge spre RDP, deci SSH nu este accesibil din internet. Pentru SSH din exterior îți trebuie un plan cu IPv4 propriu, de exemplu Windows Small-IP. Cu portul accesibil, pașii de mai jos durează aproximativ cinci minute.

1. Instalează OpenSSH Server

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Clientul este deja instalat; serverul apare ca NotPresent până îl adaugi. Pe serverul nostru instalarea a durat 28 de secunde.

2. Pornește-l și fă-l să pornească la boot

Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
Get-NetFirewallRule -Name *OpenSSH*

Instalarea funcției creează regula de firewall OpenSSH-Server-In-TCP (portul 22, intrare, permisă), deci nu trebuie să adaugi una.

3. Fă din PowerShell shell-ul implicit

Implicit, o sesiune SSH ajunge în cmd.exe. Treci la PowerShell:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

Conexiunile noi primesc imediat PowerShell 5.1; nu e nevoie de repornire.

4. Cheia pentru Administrator: fișierul la care se împiedică toată lumea

Aceasta este prima capcană Windows. Pentru conturile din grupul Administrators, sshd nu citește C:\Users\<name>\.ssh\authorized_keys. Citește un fișier comun, C:\ProgramData\ssh\administrators_authorized_keys, și doar dacă nimeni în afară de Administrators și SYSTEM nu poate scrie în el:

$pub = 'ssh-ed25519 AAAA...your-public-key... you@laptop'
Set-Content -Path C:\ProgramData\ssh\administrators_authorized_keys -Value $pub -Encoding ascii
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"

Contează și -Encoding ascii. În testul nostru, aceeași cheie salvată cu Out-File (UTF-16, implicitul din PowerShell 5.1) a fost refuzată cu Permission denied (publickey). De pe calculatorul tău:

ssh Administrator@YOUR.SERVER.IP

Ar trebui să primești un prompt PowerShell fără parolă. Pentru utilizatorii fără drepturi de administrator funcționează obișnuitul C:\Users\<name>\.ssh\authorized_keys.

5. Dezactivează autentificarea cu parolă: a doua capcană

Modificarea evidentă, PasswordAuthentication no, nu ajunge în această versiune. OpenSSH 8.1 încă oferă keyboard-interactive, care cere aceeași parolă Windows. În testul nostru, o autentificare fără cheie afișa în continuare keyboard-interactive până când am dezactivat și asta. În plus, setarea trebuie să stea înainte de blocul Match Group administrators de la finalul fișierului, altfel se aplică doar administratorilor. Comanda aceasta pune ambele rânduri la început:

$cfg = 'C:\ProgramData\ssh\sshd_config'
$lines = Get-Content $cfg | Where-Object { $_ -notmatch '^#?\s*(PasswordAuthentication|KbdInteractiveAuthentication|ChallengeResponseAuthentication)\s' }
Set-Content $cfg -Value (@('PasswordAuthentication no', 'ChallengeResponseAuthentication no') + $lines) -Encoding ascii
Restart-Service sshd

Ține deschisă sesiunea SSH actuală și testează dintr-un al doilea terminal. O încercare doar cu parolă ar trebui acum să primească:

Permission denied (publickey).

Acesta a fost rezultatul în testul nostru atât pentru Administrator, cât și pentru un utilizator obișnuit, iar autentificarea cu cheie a continuat să meargă.

Ce poți face cu el

  • Rulezi o comandă de oriunde: ssh Administrator@IP 'Get-Service sshd'.
  • Copiezi fișiere: scp .\app.zip Administrator@IP:C:/apps/.
  • Restricționezi portul la adresa ta, la fel ca pentru RDP: Set-NetFirewallRule -Name OpenSSH-Server-In-TCP -RemoteAddress 203.0.113.10.

Ce plan

SSH din exterior are nevoie de un IPv4 public: Windows Small-IP (4 vCPU, 4 GB, 50 GB) costă $28/lună, Windows Medium-IP (6 vCPU, 6 GB) $36/lună. Windows este Server 2022 cu propria ta licență (BYOL explicat). Toate cele patru planuri sunt pe pagina Windows VPS. Ca un program să ruleze și după ce te deconectezi, vezi un script 24/7 pe Windows Server.

Întrebări frecvente

De ce SSH pe Windows, dacă există RDP?

Scripturile și uneltele vorbesc SSH. Cu OpenSSH pe server rulezi comenzi PowerShell de pe o mașină Linux sau dintr-un job CI, copiezi fișiere cu scp și lași automatizarea să administreze serverul fără sesiune de desktop.

Cheia mea merge pentru un utilizator obișnuit, dar nu pentru Administrator. De ce?

Pentru membrii grupului Administrators, OpenSSH din Windows ignoră ~/.ssh/authorized_keys și citește C:\ProgramData\ssh\administrators_authorized_keys. În acel fișier trebuie să poată scrie doar Administrators și SYSTEM, altfel sshd îl sare fără să spună nimic.

Pot ajunge prin SSH la un plan Windows cu NAT?

Din exterior, nu. Pe un plan Windows cu NAT portul extern personal este redirecționat către RDP (3389) și aceasta este singura redirecționare de intrare. Pentru SSH din internet alege un plan Windows cu IPv4 propriu. În interiorul serverului, OpenSSH funcționează oricum pentru unelte locale.

Ce versiune de OpenSSH instalează Windows Server 2022?

OpenSSH 8.1p1 for Windows. De aceea setările pentru parolă folosesc ChallengeResponseAuthentication și nu numele mai nou KbdInteractiveAuthentication.

Comentarii

Încă nu există comentarii. Fii primul.

Lasă un comentariu

Comentariile sunt moderate înainte să apară.