在Linux中通过SSH连接到Windows

与Windows机器的连接总是让我感到沮丧。 不,我不是Microsoft及其产品的反对者或支持者。 每种产品都是出于其目的而存在,但这并非如此。
连接到Windows服务器一直让我痛苦不堪,因为这些连接要么是通过一个位置进行配置的(Hello WinRM,带有HTTPS),要么运行得不太稳定(向海外虚拟机提供RDP的服务)。

因此,偶然偶然发现了Win32-OpenSSH项目,我决定分享配置经验。 也许有人使用此工具可以节省很多精力。



安装选项:

  1. 手动地
  2. 通过巧克力包装
  3. 通过Ansible,例如角色jborean93.win_openssh

接下来,我将谈论第一个要点,以及其余的要点,因此一切都差不多。

我注意到该项目仍处于测试阶段,因此不建议在生产中使用。

因此,下载最新版本,当前为7.9.0.0p1-beta 。 有32位和64位系统的版本。

C:\ Program Files \ OpenSSH中解压缩
必须进行正确的工作:只有SYSTEM和admin组在此目录中具有写许可权。

使用位于此目录中的install-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 

澄清: New-NetFirewallRule小程序在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 

另外,您可以更改默认外壳程序(安装后,默认外壳程序为cmd ):

 New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force 

规范:必须指定绝对路径。

接下来是什么?

然后配置sshd_config ,我们将其放置在C:\ ProgramData \ ssh中 。 例如:

 PasswordAuthentication no PubkeyAuthentication yes 

并在用户文件夹及其授权的文件中创建.ssh目录。 我们在那里写公钥。

一个重要的说明:仅文件所在目录中的用户必须对此文件具有写权限。

但是,如果您对此有疑问,可以随时在配置中关闭权限检查:

 StrictModes no 

顺便说一下,在C:\ Program Files \ OpenSSH中,有2个脚本( FixHostFilePermissions.ps1FixUserFilePermissions.ps1 ),这些脚本应该( 但不是必需)来修复权限,包括authorized_keys ,但由于某些原因,它们将不被修复。

应用更改后,请记住重新启动sshd服务。

 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> 

主观优点/缺点

优点:

  • 连接服务器的标准方法。
    当Windows计算机很少时,以下情况非常不便:
    所以,这里我们通过ssh,这里是rdp,
    通常是带堡垒的最佳做法,首先是ssh隧道,然后通过RDP。
  • 设置简单
    我认为这很明显。
  • 连接速度和使用远程计算机的速度
    没有图形外壳;服务器资源和传输的数据量都被保存。

缺点:

  • 不完全取代RDP。
    ,并不是所有的事情都可以从控制台上完成。 我的意思是需要GUI的情况。

本文中使用的材料:
链接到项目本身
安装选项从Ansible docs中无耻复制。

Source: https://habr.com/ru/post/zh-CN453676/


All Articles