Menyambung ke Windows melalui SSH seperti Linux

Saya sentiasa kecewa dengan menyambung ke mesin Windows. Tidak, saya bukan lawan mahupun penyokong Microsoft dan produk mereka. Setiap produk wujud untuk tujuannya sendiri, tetapi bukan itu maksudnya.
Ia sentiasa menyakitkan bagi saya untuk menyambung ke pelayan Windows, kerana sambungan ini sama ada dikonfigurasikan melalui satu tempat (hello WinRM dengan HTTPS) atau tidak berfungsi dengan sangat stabil (hello RDP ke mesin maya di luar negara).

Oleh itu, secara tidak sengaja terjumpa projek itu Win32-OpenSSH, saya memutuskan untuk berkongsi pengalaman persediaan saya. Mungkin alat ini akan menyelamatkan seseorang daripada banyak saraf.

Menyambung ke Windows melalui SSH seperti Linux

Pilihan pemasangan:

  1. Dengan tangan
  2. Melalui pakej itu Chocolatey
  3. Melalui Ansible, contohnya peranan jborean93.win_openssh

Seterusnya, saya akan bercakap tentang perkara pertama, kerana semuanya lebih atau kurang jelas dengan yang lain.

Saya ingin ambil perhatian bahawa projek ini masih di peringkat beta, jadi tidak disyorkan untuk menggunakannya dalam pengeluaran.

Jadi, muat turun keluaran terkini, pada masa ini 7.9.0.0p1-beta. Terdapat versi untuk kedua-dua sistem 32 dan 64 bit.

Buka bungkusan C:Program FilesOpenSSH
Titik wajib untuk operasi yang betul: hanya SISTEM dan kumpulan pentadbir.

Memasang perkhidmatan menggunakan skrip install-sshd.ps1 terdapat dalam direktori ini

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

Benarkan sambungan masuk pada port 22:

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

Penjelasan: applet New-NetFirewallRule digunakan pada Windows Server 2012 dan lebih baru. Dalam sistem tertua (atau desktop) anda boleh menggunakan arahan:

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

Mari mulakan perkhidmatan:

net start sshd

Pada permulaan, kunci hos akan dijana secara automatik (jika tiada) dalam %programdata%ssh

Kami boleh mendayakan autostart perkhidmatan apabila sistem bermula dengan arahan:

Set-Service sshd -StartupType Automatic

Anda juga boleh menukar shell arahan lalai (selepas pemasangan, lalai ialah cmd):

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

Penjelasan: Anda mesti menentukan laluan mutlak.

Apa seterusnya?

Dan kemudian kami menyediakannya sshd_config, yang akan kami letakkan C:Data Program. Sebagai contoh:

PasswordAuthentication no
PubkeyAuthentication yes

Dan buat direktori dalam folder pengguna .ssh, dan di dalamnya fail kunci_benar. Kami menulis kunci awam di sana.

Penjelasan penting: hanya pengguna di dalam direktori mana fail itu berada harus mempunyai hak untuk menulis ke fail ini.

Tetapi jika anda menghadapi masalah dengan ini, anda sentiasa boleh mematikan semakan hak dalam konfigurasi:

StrictModes no

By the way, dalam C:Program FilesOpenSSH terdapat 2 skrip (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), yang sepatutnya tetapi tidak diwajibkan untuk menetapkan hak, termasuk dengan kunci_benar, tetapi atas sebab tertentu mereka tidak mendaftar.

Jangan lupa untuk memulakan semula perkhidmatan SSHD selepas menggunakan 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>

Kebaikan/keburukan subjektif.

Kelebihan:

  • Pendekatan standard untuk menyambung ke pelayan.
    Apabila terdapat sedikit mesin Windows, adalah sangat menyusahkan apabila:
    Jadi, di sini kita pergi melalui ssh, dan di sini kita menggunakan rdp,
    dan secara amnya, amalan terbaik dengan benteng adalah pertama terowong ssh, dan RDP melaluinya.
  • Mudah disediakan
    Saya rasa ini jelas.
  • Kelajuan sambungan dan kerja dengan mesin jauh
    Tiada cangkerang grafik, menjimatkan kedua-dua sumber pelayan dan jumlah data yang dihantar.

Cons:

  • Tidak menggantikan RDP sepenuhnya.
    Tidak semuanya boleh dilakukan dari konsol, malangnya. Saya maksudkan situasi di mana GUI diperlukan.

Bahan yang digunakan dalam artikel:
Pautan ke projek itu sendiri
Pilihan pemasangan disalin tanpa rasa malu Dokumen yang boleh dipercayai.

Sumber: www.habr.com

Tambah komen