Menghubungkan ke Windows melalui SSH seperti Linux

Saya selalu frustrasi saat menghubungkan ke mesin Windows. Tidak, saya bukan penentang atau pendukung Microsoft dan produk mereka. Setiap produk ada untuk tujuannya masing-masing, tapi bukan itu intinya.
Selalu sangat menyakitkan bagi saya untuk terhubung ke server Windows, karena koneksi ini dikonfigurasi melalui satu tempat (halo WinRM dengan HTTPS) atau tidak bekerja dengan stabil (halo RDP ke mesin virtual di luar negeri).

Oleh karena itu, secara tidak sengaja menemukan proyek tersebut Win32-OpenSSH, saya memutuskan untuk berbagi pengalaman pengaturan saya. Mungkin alat ini akan menyelamatkan banyak saraf seseorang.

Menghubungkan ke Windows melalui SSH seperti Linux

Opsi instalasi:

  1. Secara manual
  2. Melalui paket Cokelat
  3. Melalui Ansible, misalnya peran jborean93.win_openssh

Selanjutnya, saya akan berbicara tentang poin pertama, karena semuanya kurang lebih jelas dengan poin lainnya.

Saya ingin mencatat bahwa proyek ini masih dalam tahap beta, jadi tidak disarankan untuk menggunakannya dalam produksi.

Jadi, unduh rilis terbaru, sekarang juga 7.9.0.0p1-beta. Ada versi untuk sistem 32 dan 64 bit.

Buka kemasannya C:Program FilesOpenSSH
Poin wajib untuk pengoperasian yang benar: hanya SISTEM dan grup admin.

Menginstal layanan menggunakan skrip instal-sshd.ps1 terletak di direktori ini

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

Izinkan koneksi masuk pada port 22:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Klarifikasi: applet Aturan NetFirewall Baru digunakan pada Windows Server 2012 dan yang lebih baru. Di sistem terlama (atau desktop) Anda dapat menggunakan perintah:

netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22

Mari kita mulai layanannya:

net start sshd

Saat startup, kunci host akan dibuat secara otomatis (jika tidak ada). %data program%ssh

Kita dapat mengaktifkan layanan autostart ketika sistem dimulai dengan perintah:

Set-Service sshd -StartupType Automatic

Anda juga dapat mengubah shell perintah default (setelah instalasi, defaultnya adalah cmd):

New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -Force

Klarifikasi: Anda harus menentukan jalur absolut.

Apa selanjutnya?

Dan kemudian kami mengaturnya sshd_config, yang akan kami tempatkan C: Data Program. Sebagai contoh:

PasswordAuthentication no
PubkeyAuthentication yes

Dan buat direktori di folder pengguna .ssh, dan di dalamnya ada file otorisasi_keys. Kami menuliskan kunci publik di sana.

Klarifikasi penting: hanya pengguna yang direktorinya berisi file yang berhak menulis ke file ini.

Tetapi jika Anda mempunyai masalah dengan ini, Anda selalu dapat mematikan pemeriksaan hak di konfigurasi:

StrictModes no

Ngomong-ngomong, di C:Program FilesOpenSSH ada 2 skrip (PerbaikiHostFilePermissions.ps1, PerbaikiUserFilePermissions.ps1), yang seharusnya tetapi tidak wajib untuk menetapkan hak, termasuk dengan otorisasi_keys, tapi entah kenapa mereka tidak mendaftar.

Jangan lupa untuk me-restart layanan sshd setelah menerapkan perubahan.

ru-mbp-666:infrastructure$ ssh [email protected] -i ~/.ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:UsersAdministrator> 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:UsersAdministrator>

Pro/kontra subyektif.

Pro:

  • Pendekatan standar untuk menghubungkan ke server.
    Ketika mesin Windows hanya sedikit, akan sangat merepotkan bila:
    Jadi, di sini kita menggunakan ssh, dan di sini kita menggunakan rdp,
    dan secara umum, praktik terbaik dengan bastion pertama-tama adalah terowongan ssh, dan RDP melaluinya.
  • Mudah diatur
    Saya pikir ini sudah jelas.
  • Kecepatan koneksi dan bekerja dengan mesin jarak jauh
    Tidak ada shell grafis, menghemat sumber daya server dan jumlah data yang dikirimkan.

Cons:

  • Tidak sepenuhnya menggantikan RDP.
    Sayangnya, tidak semuanya bisa dilakukan dari konsol. Maksud saya situasi di mana GUI diperlukan.

Bahan yang digunakan dalam artikel:
Tautan ke proyek itu sendiri
Opsi instalasi disalin tanpa malu-malu Dokumen yang memungkinkan.

Sumber: www.habr.com

Tambah komentar