Saya selalu tertekan oleh koneksi ke mesin Windows. Tidak, saya bukan lawan atau pendukung Microsoft dan produk mereka. Setiap produk ada untuk tujuannya, tetapi ini bukan tentang itu.
Itu selalu menyakitkan bagi saya untuk terhubung ke server Windows, karena koneksi ini dikonfigurasi melalui satu tempat (halo WinRM dengan HTTPS) atau tidak bekerja dengan sangat stabil (halo RDP ke mesin virtual di luar negeri).
Oleh karena itu, tanpa sengaja menemukan proyek
Win32-OpenSSH , saya memutuskan untuk berbagi pengalaman konfigurasi. Mungkin seseorang alat ini menyimpan banyak saraf.

Opsi Instalasi:
- Secara manual
- Melalui Paket Chocolatey
- Via Ansible, mis. Peran jborean93.win_openssh
Selanjutnya, saya akan berbicara tentang poin pertama, seperti yang lain, dan jadi semuanya lebih atau kurang jelas.
Saya perhatikan bahwa proyek ini masih dalam versi beta, jadi tidak disarankan untuk digunakan dalam produksi.
Jadi, unduh rilis terbaru, saat ini
versi 7.9.0.0p1-beta . Ada versi untuk sistem 32 dan 64 bit.
Buka kemasan dalam
C: \ Program Files \ OpenSSHWajib saat untuk pekerjaan yang benar: hanya
SISTEM dan grup admin yang harus memiliki izin menulis di direktori ini.
Instal layanan dengan
skrip install-sshd.ps1 yang terletak di direktori ini
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
Izinkan koneksi masuk ke port 22:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
Klarifikasi:
applet New-NetFirewallRule digunakan pada Windows Server 2012 dan yang lebih baru. Di sistem tertua (atau desktop), Anda dapat menggunakan perintah:
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
Kami memulai layanan:
net start sshd
Saat startup, kunci host (jika tidak ada) akan secara otomatis dihasilkan dalam
% programdata% \ sshAutostart layanan pada startup sistem yang dapat kita aktifkan dengan perintah:
Set-Service sshd -StartupType Automatic
Anda juga dapat mengubah shell default (setelah instalasi, defaultnya adalah
cmd ):
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
Spesifikasi: Jalur absolut harus ditentukan.
Apa selanjutnya
Dan kemudian konfigurasikan
sshd_config , yang akan kita tempatkan di
C: \ ProgramData \ ssh . Sebagai contoh:
PasswordAuthentication no PubkeyAuthentication yes
Dan buat direktori
.ssh di folder pengguna, dan di dalamnya ada file
Authorized_keys . Kami menulis kunci publik di sana.
Klarifikasi penting: hanya pengguna yang memiliki direktori tempat file tersebut harus memiliki izin menulis untuk file ini.
Tetapi jika Anda memiliki masalah dengan ini, Anda selalu dapat mematikan pemeriksaan hak di konfigurasi:
StrictModes no
Ngomong-ngomong, di
C: \ Program Files \ OpenSSH ada 2 skrip (
FixHostFilePermissions.ps1 ,
FixUserFilePermissions.ps1 ), yang seharusnya
tetapi tidak diharuskan untuk memperbaiki hak-haknya, termasuk dengan
Authorized_keys , tetapi untuk beberapa alasan mereka tidak akan diperbaiki.
Ingatlah untuk memulai kembali layanan
sshd setelah 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 subyektif.
Pro:
- Pendekatan standar untuk menghubungkan ke server.
Ketika ada beberapa mesin Windows, itu sangat merepotkan ketika:
Jadi, di sini kita pergi dengan ssh, dan di sini rdp,
dan umumnya praktik terbaik dengan benteng, pertama terowongan ssh, dan melalui itu RDP. - Pengaturan mudah
Saya pikir ini sudah jelas. - Kecepatan koneksi dan bekerja dengan mesin jarak jauh
Tidak ada shell grafis, baik sumber daya server dan jumlah data yang dikirim disimpan.
Cons:
- Tidak mengganti RDP sepenuhnya.
Tidak semuanya bisa dilakukan dari konsol, sayang. Maksud saya situasi di mana GUI diperlukan.
Bahan yang digunakan dalam artikel:
Tautan ke proyek itu sendiriOpsi instalasi disalin tanpa malu-malu dari
Ansible docs .