So. Pro 21st, 2024
internetové dědictví v podobě memu kde je v horní polovině meme hlava připomínající kulatou plešatou hlava kapitána picarda, která říká - hey, chci odinstalovat microsoft edge prohlížeč! A napravo tatáž hlava vztekající se, překrytá logem Windows kříčící, že ne, rozbiješ windows! A dole blonďatý, týpek z profilu říkající "hej, chci odinstalovat bootloader na linuxu!" a vpravo dole ten stejný týpek s překrytou hlavou logem Linuxu "jo jasný, do toho, lol!"

Je to totální prasárna, ale pokud se chcete vyhnout částečně powershellu, tohle je částečná cesta. Každopádně v tomto rychlonávodu si ukážeme, jak rozběhat OpenSSH server na Windows tak, aby se na něj dostali uživatelé z Linuxu, nebo z jiných Windows či Macu. Navkládám tu i odkazy na konfiguraci serveru.

Instalujeme OpenSSH server na Windows

https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse?source=recommendations&tabs=gui

Otevřeme příkazovou řádku / START / spustit / cmd / spustit
pravým tlačítkem na spuštěné okno dole na liště / spustit jako / administrator / vyskočí tabulka s právy na potvrzení pravomocí / dáme ano /

napíšeme powershell a dáme enter a pak vložíme tento příkaz a nainstaluje se nám OpenSSH server

# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

#POkud by nesouhlasily verze, tak koukneme, jaké jsou verze k dispozici teď:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

#Povolíme práva a nastavíme OpenSSH server aby startoval automaticky se startem windows:
# Start the sshd service
Start-Service sshd

# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'

# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
    Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
    New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
    Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}

Vytvoříme klíče (rsa nebo ed25519, který je „bezpečnější“)

Podle následujícího návodu:

https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement

Zkusíme vytvořit klíče:

Microsoft Windows [Version 10.0.19045.3324]
(c) Microsoft Corporation. Všechna práva vyhrazena.
C:\Users\user>powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
Try the new cross-platform PowerShell https://aka.ms/pscore6
PS C:\Users\user> ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\user/.ssh/id_ed25519):  //enter
Enter passphrase (empty for no passphrase):  //pro automatizovaný přístup bez hesla stačí dát enter
Enter same passphrase again:  //znovu enter
Your identification has been saved in C:\Users\user/.ssh/id_ed25519.
Your public key has been saved in C:\Users\user/.ssh/id_ed25519.pub.

Ověříme, že funguje ssh-agent

C:\WINDOWS\system32>powershell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell https://aka.ms/pscore6

PS C:\WINDOWS\system32> Get-Service ssh-agent | Set-Service -StartupType Automatic
PS C:\WINDOWS\system32> Start-Service ssh-agent
PS C:\WINDOWS\system32>
PS C:\WINDOWS\system32> Get-Service ssh-agent

Status   Name               DisplayName
------   ----               -----------
Running  ssh-agent          OpenSSH Authentication Agent

Vložíme klíč do "bezpečného úložiště" pro použití tohoto klíče pro připojení na vzdálené servery jako defaultní. 
(v tomto návodu se můžeme obejít i bez toho, ale přikládám to tu jako užitečnou pasáž)

PS C:\WINDOWS\system32> ssh-add $env:USERPROFILE\.ssh\id_ed25519
Identity added: C:\Users\user\.ssh\id_ed25519 (user@pocitac)
PS C:\WINDOWS\system32> $authorizedKey = Get-Content -Path $env:USERPROFILE\.ssh\id_ed25519.pub
PS C:\WINDOWS\system32> $remotePowershell = "powershell Add-Content -Force -Path $env:ProgramData\ssh\administrators_authorized_keys -Value '$authorizedKey';icacls.exe ""$env:ProgramData\ssh\administrators_authorized_keys"" /inheritance:r /grant ""administrators:F"" /grant ""SYSTEM:F"""

# vyzkoušíme, že se public klíč dokáže přidat na tomto stroji 
# Bude to chtít zadat heslo pro uživatele user:
PS C:\WINDOWS\system32> ssh user@localhost $remotePowershell
The authenticity of host 'localhost (::1)' can't be established.
ECDSA key fingerprint is SHA256:c7aosdjaosdhfuashdfluashdfulsahYFZ3M.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
user@localhost's password:
processed file: C:\ProgramData\ssh\administrators_authorized_keys
Successfully processed 1 files; Failed processing 0 files

Nainstalujeme editor VIM

Nainstalujeme Vim, který lze stáhnout na tomto odkazu. (silentinstall baťáček možná někdy příště)

// Vimem vložím obsah id_ed25519.pub do C:\ProgramData\ssh\administrators_authorized_keys což je ekvivalent na windows /root/.ssh/authorized_keys na Linuxu, pokud to za nás neudělal předchozí příkaz.  
Takže 1 vložený řádek do administrators_authorized_keys bude vypadat nějak takto:
ssh-ed25519 hashpublicklíčeigaodfiadfaisdhfaoushfapfgapizgfasfa  user@jménopc


PS C:\Users\user> vim C:\ProgramData\ssh\administrators_authorized_keys
// Potom musíme nastavit oprávnění pro administartors_authorized_keys
PS C:\Users\user> icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "administrators:F" /grant "SYSTEM:F"

processed file: C:\ProgramData\ssh\administrators_authorized_keys
Successfully processed 1 files; Failed processing 0 files

Přihlášení přes ssh z Linuxu do Windows

A na vzdáleném linuxovém stroji, kde chci přistupovat např. z uživatele root, který má ed25519 klíč

ssh -p22 -i /root/.ssh/id_ed25519 uživatel@IPWindows


// možná se vaše windows nacházejí na jiném cílovém portu, než na portu 22, proto jsem uvedl parametr -p22, někdo si to může vložit na port -p80 nebo -p443, aby to nevypadalo tak podezřele.

Pokud chci něco nakopírovat z filesystému z windows na linux:

scp -P22 -i /root/.ssh/id_ed25519 -r uživatel@IPWindows:/C:/Users/uživatel/adresář/ ./ 

Pokud chci něco nakopírovat ze stroje z roota do vzdáleného pc:

scp -P22 -i /root/.ssh/id_ed25519 -r /nejaka/cesta/k/adresari/ uživatel@IPWindows:/C:/Users/uživatel/adresář/ 

scp -P určuje port. Pozor, ssh -p zatímco ssh -P (velké vs. malé p), scp -r (rekurzivně vč. podadresářů) odkudZLokálníhoAdresáře kamUživatel@KamCílováMašina:/C:/složka/Na/Windows/kam/chci/něco/nahrát/

Přikládám meme z redditu, zdroj: https://i.redd.it/dyu53skwpyo71.jpg

Co Windows subsystem for linux Na Windows + Virtualbox?

Tady si nemohu dovolit nestabilitu Virtualboxu, nebo WSL2 pro Windows, nicméně jsem našel řešení zde.

Ve zkratce. Použít hypervisor virtualboxu tak, aby používal microsoft hyper-v a nemělo by to ničemu vadit. Nicméně ve stejné diskusi se nacházejí komentáře, které oznamují crashující WSL2, nebo problémy s Virtualboxem. I přesto je OpenSSH na windowsáckých stanicích výhra, lze pouštět baťáky, powershell skripty, kopírovat a přepisovat soubory (hlavně konfiguráky) a pokud to jde takto, mělo by to jít později zkombinovat i s ansiblem, balíčkovacím systémem chocolatey.

Rychlokurz Chocolatey

Na tomto odkaze máte návod, jak rozběhat pár příkazy balíčkovací systém chocolatey na vašem systému. Ale musíte trošku sáhnout do bezpečnosti. https://chocolatey.org/install#individual
Pak už jste schopni příkazy choco install názevBalíčku nainstalovat téměř jakýkoliv software. Má to výhody i nevýhody. Nevýhody v tom, že nikdy nemáte nejnovější verze, ale „stable“, tedy 1 až 2 verze starší, než novější. Výhoda však je, že pokud potřebujete teď a tady něco nainstalovat, tak to lze udělat skriptem, z linuxu, na windows a instalovat tak vše potřebné z repozitářů za chodu. Můžete si taky udělat vlastní repozitář a instalovat vše co chcete z vlastního repozitáře, ale tam se ještě propracuji, abych nabídl svým uživatelům částečnou nezávislost. Nebo naopak mě pomoci řešit deployment automatizovaně, např. skrze pipeliny v Gitlabu. 😉

zdroj1 zdroj2 zdroj3

Avatar

By mirra

Hardwaru a počítačům se věnuji již od roku 2003. Za tu dobu jsem poskládal stovky počítačů, opravil tisíce počítačů a vyřešil nespočetně problémů, vad a chyb, se kterými se setkávali uživatelé. Od roku 2005 se zabývám servery, zejména těmi herními, v roce 2007 jsem se začal věnovat Valve Source SDK level designu, který šel od roku 2009 k ledu kvůli studiu Informatiky na univerzitě. Podílel jsem se chvíli i na provozu síťové laboratoře MENDELU, dnes spravuji v jedné osobě cca 100 serverů/diskových polí na univerzitě, řeším IT v malých a středních firmách tak, aby firmy ušetřily nemalé částky při zlepšení kvality a soustředím se na snižování nákladů na IT od licencí až po hardware, software, provádím konsolidace a audity platnosti licencí, které firmám šetří rovněž nemalé peníze. Z velkých firem jsem měl příležitost s dalšími kolegy řešit správu 8000 serverů po celé západní Evropě s vysokou mírou automatizace a poznávání nejrůznějších evropských pracovních mentalit. Dále jsem řešil hybridní cloud ve velké firmě, orientované na trhy střední a východní Evropy. Posledních několik let se věnuji Devops pro velké zákazníky v Azure cloudu, spravuji kubernetes (AKS), Gitlab.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *