Menghubungkan ke Windows melalui SSH seperti di Linux

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:

  1. Secara manual
  2. Melalui Paket Chocolatey
  3. 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 \ OpenSSH
Wajib 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% \ ssh

Autostart 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 sendiri
Opsi instalasi disalin tanpa malu-malu dari Ansible docs .

Source: https://habr.com/ru/post/id453676/


All Articles