Hal yang paling menyedihkan bagi saya adalah terhubung ke host Windows. Saya bukan lawan atau penggemar Microsoft dan produk mereka. Setiap produk memiliki tujuan masing-masing. Tapi itu sangat menyakitkan bagi saya untuk terhubung ke server Windows, karena 2 poin: sulit untuk mengkonfigurasi (Hi WinRM dengan HTTPS), dan itu benar-benar tidak stabil (Halo RDP ke VMs di seberang lautan).
Untungnya, saya menemukan proyek
Win32-OpenSSH . Saya menyadari bahwa saya ingin membagikan pengalaman saya dengannya. Saya percaya itu akan membantu seseorang dan menyelamatkan banyak saraf.

Cara instalasi:
- Secara manual
- Melalui paket Chocolatey
- Via Ansible, izinkan kami mengatakan peran jborean93.win_openssh
Saya akan menjelaskan cara manual karena yang lain sudah jelas.
Saya harus perhatikan, proyek ini masih dalam tahap beta dan tidak disarankan untuk menggunakannya dalam produksi.
Baiklah, mari unduh rilis terbaru. Saat ini adalah
7.9.0.0p1-beta . Ini juga memiliki versi 32 dan 64 bit.
Kemudian bongkar ke
C: \ Program Files \ OpenSSH .
Penting: Penting untuk memberikan akses
tertulis ke
sistem dan grup Administer saja.
Selanjutnya, instal layanan melalui shell script
install-sshd.ps1 yang terletak di direktori OpenSSH
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
Mari kita izinkan koneksi masuk pada port 22:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
Catatan: applet
New-NetFirewallRule hanya untuk Windows Server 2012 dan di atasnya. Untuk OS yang lebih tua atau desktop, Anda dapat menggunakan perintah berikut:
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
Mulai layanan:
net start sshd
Ini secara otomatis akan menghasilkan kunci host di bawah
% programdata% \ ssh jika belum ada.
Anda dapat mengatur layanan auto-start dengan perintah:
Set-Service sshd -StartupType Automatic
Anda juga dapat mengubah shell default (ini adalah
cmd secara default setelah menginstal):
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
Catatan: Anda harus mendefinisikan jalur absolut.
Apa selanjutnya
Kami dapat mengkonfigurasi
sshd_config , yang terletak di
C: \ ProgramData \ ssh .
Misalnya:
PasswordAuthentication no PubkeyAuthentication yes
Kemudian kita membuat direktori
.ssh di dalam direktori pengguna (
C: \ Users \ <user_directory> ) dan file
berwenang_keys di dalamnya. Kami dapat menempelkan kunci publik ke file ini.
Penting: satu-satunya pengguna di direktori ini, harus memiliki izin menulis untuk file ini.
Omong-omong, jika Anda tidak dapat memperbaikinya, Anda dapat menonaktifkan pemeriksaan izin melalui konfigurasi:
StrictModes no
Juga, direktori
C: \ Program Files \ OpenSSH berisi 2 skrip (
FixHostFilePermissions.ps1 ,
FixUserFilePermissions.ps1 ), yang seharusnya
tetapi tidak diwajibkan memperbaiki izin, termasuk izin
otor_keys , tetapi tidak.
Jangan lupa untuk me-restart layanan
sshd untuk menerapkan perubahan.
ru-mbp-666:infrastructure$ ssh Administrator@192.168.1.10 -i ~/.ssh/id_rsa Windows PowerShell Copyright (C) 2016 Microsoft Corporation. All rights reserved. PS C:\Users\Administrator> Get-Host Name : ConsoleHost Version : 5.1.14393.2791 InstanceId : 653210bd-6f58-445e-80a0-66f66666f6f6 UI : System.Management.Automation.Internal.Host.InternalHostUserInterface CurrentCulture : en-US CurrentUICulture : en-US PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy DebuggerEnabled : True IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspace PS C:\Users\Administrator>
Pro / kontra pribadi.
Pro:
- Cara standar untuk terhubung ke server apa pun (Windows / Linux)
Ketika Anda memiliki beberapa host Windows, itu tidak nyaman:
Jadi, di sini kita pergi melalui ssh, tetapi di sini melalui RDP,
dan secara umum, ini adalah praktik terbaik dengan bastion, pertama ssh-tunnel, kemudian RDP melalui tunnel. Oh bunuh aku sayang sekali lagi. - Mudah dikonfigurasikan
Saya pikir itu sudah jelas. - Kecepatan koneksi ke host jarak jauh
Tanpa GUI kami menghemat sumber daya host, dan ukuran data yang dikirimkan
Cons:
- Itu tidak dapat menggantikan RDP dalam beberapa kasus.
Bukan semua hal yang dapat Anda lakukan melalui PowerShell. Maksud saya kasus ketika GUI diperlukan.
Tautan:
Proyek di githubDokumen yang memungkinkan