Akhir-akhir ini aku diam di mana-mana. Saya SSH ke Linux dari Windows menggunakan Klien OpenSSH bawaan yang telah dikirimkan Windows 10 selama bertahun-tahun yang tidak Anda ketahui.;) Anda tidak perlu Putty ke SSH dengan Windows (kecuali jika itu membuat Anda senang, maka pakailah Putty, sobat.)
Menambahkan OpenSSH Server ke Windows
Dari PowerShell Administratif saya akan melihat hal-hal OpenSSH apa yang telah saya aktifkan. Saya juga dapat melakukannya dengan mengetik "Fitur Windows" dari Menu Mulai.
> Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Name : OpenSSH.Client~~~~0.0.1.0
State : Installed
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent
Sepertinya saya memiliki barang klien OpenSSH tetapi bukan server. Saya bisa SSH dari Windows, tapi tidak.
Saya akan menambahkannya dengan perintah serupa dengan super aneh tetapi tampaknya diperlukan versi di akhir:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Memulai SSHD di Windows sebagai Layanan
Setelah ini selesai (dan tentu saja Anda dapat menjalankan ini dengan OpenSSH.Client juga untuk mendapatkan kedua sisi jika Anda tidak melakukannya) maka Anda dapat memulai server SSH (sebagai Layanan Windows) dengan ini, lalu pastikan itu berjalan.
Start-Service sshd
Get-Service sshd
Karena ini adalah Layanan Windows, Anda dapat melihatnya sebagai "OpenSSH SSH Server" di services.msc serta mengaturnya untuk memulai secara otomatis pada Startup jika Anda mau. Anda dapat melakukannya lagi, dari PowerShell jika Anda mau
Set-Service -Name sshd -StartupType 'Automatic'
Ingatlah bahwa kami melakukan SSH melalui port 22 sehingga Anda akan memiliki aturan firewall yang masuk pada 22 saat ini. Terserah Anda untuk menyadari keamanan. Mungkin Anda hanya mengizinkan SSHing ke mesin Windows Anda dengan kunci publik (tanpa kata sandi) atau mungkin Anda tidak keberatan. Sadarilah, itu ada pada Anda, bukan saya.
Sekarang, dari mesin Linux (atau Windows) mana pun saya dapat SSH ke mesin Windows saya seperti seorang profesional! Catatan Saya menggunakan akhiran domain .local untuk memastikan saya tidak mendapatkan mesin di VPN saya (tetap di subnet lokal saya)
$ ssh [email protected]
Microsoft Windows [Version 10.0.19041.113]
(c) 2020 Microsoft Corporation. All rights reserved.
scott@IRONHEART C:\Users\scott>pwsh
PowerShell 7.0.0
Copyright (c) Microsoft Corporation. All rights reserved.
https://aka.ms/powershell
Type 'help' to get help.
Loading personal and system profiles took 1385ms.
⚡ scott@IRONHEART>
Perhatikan bahwa ketika saya SSH masuk ke Windows, saya mendapatkan shell cmd.exe default. Ingat juga bahwa ada perbedaan antara konsol, terminal, dan shell! Saya dapat ssh dengan terminal apa pun ke mesin apa pun dan berakhir di Shell apa pun. Dalam hal ini, DEFAULT adalah cmd.exe, yang tidak optimal.
Mengonfigurasi shell default untuk OpenSSH di Windows
Di server saya (mesin Windows tempat saya menggunakan SSHing) saya akan mengatur kunci registri untuk mengatur shell default. Dalam hal ini, saya akan menggunakan open source lintas platform PowerShell Core. Anda dapat menggunakan apa pun yang membuat Anda bahagia.
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\PowerShell\7\pwsh.exe" -PropertyType String -Force
Sekarang ketika saya ssh ke mesin Windows saya dari tempat lain (bahkan iPad saya!) Saya mendapatkan shell yang saya inginkan:
$ ssh [email protected]
PowerShell 7.0.0
Copyright (c) Microsoft Corporation. All rights reserved.
https://aka.ms/powershell
Type 'help' to get help.
Loading personal and system profiles took 1854ms.
⚡ scott@IRONHEART>
Lebih baik lagi jika saya ingin menambahkan item menu (profil) ke Terminal Windows saya dengan entri untuk Mesin Windows saya yang secara otomatis akan memasukkan saya ke dalamnya dari tempat lain menggunakan kunci publik, saya juga bisa melakukannya!
Selain itu, sekarang setelah ini diatur, saya dapat menggunakan WinSCP (tersedia di Window Store) serta scp (Salinan Aman) untuk mentransfer file.
Tentu saja Anda juga dapat menggunakan WinRM atau PowerShell Remoting melalui SSH tetapi untuk jaringan internal kecil saya, saya menemukan mekanisme ini sederhana dan bersih. Sekarang pendiam saya adalah non-denominasi!
Sponsor: Sudahkah Anda mencoba mengembangkan di Rider? IDE lintas platform yang cepat dan kaya fitur ini menyempurnakan kode Anda untuk aplikasi .NET, ASP.NET, .NET Core, Xamarin, dan Unity di Windows, Mac, dan Linux.