像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 文档.

来源: habr.com

添加评论