像Linux一樣透過SSH連接到Windows

我一直對連接 Windows 機器感到沮喪。 不,我既不是微軟及其產品的反對者,也不是支持者。 每個產品的存在都有其自己的目的,但這不是它的目的。
連接到 Windows 伺服器對我來說一直是極其痛苦的,因為這些連接要么是透過一個地方配置的(hello WinRM with HTTPS),要么工作不穩定(hello RDP 到海外虛擬機器)。

因此,無意中遇到了這個項目 Win32-OpenSSH,我決定分享我的設定經驗。 也許這個工具可以讓人省去很多麻煩。

像Linux一樣透過SSH連接到Windows

安裝選項:

  1. 手工
  2. 通過 巧克力味
  3. 透過 Ansible,例如角色 jborean93.win_openssh

接下來我就講第一點,其他的事情都已經比較清楚了。

我想指出的是,該項目仍處於測試階段,因此不建議在生產中使用它。

因此,下載最新版本,目前是 7.9.0.0p1-測試版。 有適用於 32 位元和 64 位元系統的版本。

打開包裝 C:Program FilesOpenSSH
正確操作的強制要點:僅 系統 和管理組。

使用腳本安裝服務 安裝-sshd.ps1 位於該目錄中

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

允許連接埠 22 上的傳入連線:

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

澄清:小程序 新的NetFirewall規則 在 Windows Server 2012 及更高版本上使用。 在最舊的系統(或桌面)中,您可以使用以下命令:

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

讓我們啟動服務:

net start sshd

啟動時,主機金鑰將自動產生(如果遺失) %programdata%ssh

我們可以使用以下命令啟用系統啟動時服務的自動啟動:

Set-Service sshd -StartupType Automatic

您也可以更改預設的命令 shell(安裝後預設為 CMD):

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

說明:您必須指定絕對路徑。

接下來是什麼?

然後我們設定一下 sshd_配置,我們將把它放在 C:程式數據。 例如:

PasswordAuthentication no
PubkeyAuthentication yes

並在使用者資料夾中建立一個目錄 .ssh,以及其中的文件 授權密鑰。 我們在那裡寫下公鑰。

重要說明:只有檔案所在目錄的使用者才有權寫入該檔案。

但如果您遇到問題,您可以隨時在配置中關閉權限檢查:

StrictModes no

順便說一句,在 C:Program FilesOpenSSH 有 2 個腳本(修復HostFilePermissions.ps1, 修復使用者檔案權限.ps1),應該但沒有義務確定權利,包括 授權密鑰,但由於某種原因他們沒有註冊。

不要忘記重新啟動服務 sshd的 之後套用更改。

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>

主觀優點/缺點。

優點:

  • 連接伺服器的標準方法。
    當Windows機器很少時,以下情況就很不方便:
    所以,這裡我們透過 ssh,這裡我們使用 rdp,
    一般來說,堡壘的最佳實踐首先是 ssh 隧道,然後通過它進行 RDP。
  • 易於設置
    我認為這是顯而易見的。
  • 連接和與遠端機器一起工作的速度
    沒有圖形外殼,既節省了伺服器資源,也節省了傳輸的資料量。

缺點:

  • 不完全取代 RDP。
    唉,並不是所有事情都可以從控制台完成。 我的意思是需要 GUI 的情況。

文章中使用的資料:
連結到項目本身
安裝選項無恥地複製自 Ansible 文檔.

來源: www.habr.com

添加評論