当前位置: 首页 > news >正文

如何在Linux机器上使用ssh远程连接Windows Server服务器

如何在Linux机器上使用ssh远程连接Windows Server服务器

  • 一、源起
  • 二、使用ssh远程连接Windows
    • 1.先决条件
      • (1)至少运行 Windows Server 2019 或 Windows 10(内部版本 1809)的设备。
      • (2)PowerShell 5.1 或更高版本。
      • (3)作为内置管理员组成员的帐户。
    • 2.先决条件检查
    • 3.安装适用于 Windows 的 OpenSSH
      • (1)打开“设置”,选择“应用”,然后选择“可选功能”。
      • (2)扫描列表,查看是否已安装 OpenSSH。 如果未安装,请在页面顶部选择“添加功能”,然后:
      • (3)设置完成后,回到“应用”和“可选功能”,并确认 OpenSSH 已列出。
      • (4)打开“服务”桌面应用。 (选择“开始”,在搜索框中键入 services.msc ,然后选择“服务”应用或按 ENTER。)
      • (5)在详细信息窗格中,双击“OpenSSH SSH 服务器”。
      • (6)在“常规”选项卡上的“启动类型”下拉菜单中,选择“自动”。
      • (7)若要启动服务,请选择“启动”。
    • 4.连接到 OpenSSH 服务器
  • 三、OpenSSH for Windows 中基于密钥的身份验证
    • 1.部署私钥
    • 2.部署公钥
      • (1)标准用户
      • (2)管理用户
  • 四、实际验证

一、源起

   当前在研究goploy自动化开源部署工具,该工具部署在linux机器上,而要部署服务的目标服务器有一部分是windows server服务器,goploy自动化部署,使用rsync部署方式,底层依赖于ssh远程连接目标服务器,所以,要实现自动化部署,必须先实现ssh远程连接目标windows server服务器。下面将依次说明具体步骤。

二、使用ssh远程连接Windows

1.先决条件

在开始之前,计算机必须满足以下要求:

(1)至少运行 Windows Server 2019 或 Windows 10(内部版本 1809)的设备。

(2)PowerShell 5.1 或更高版本。

(3)作为内置管理员组成员的帐户。

2.先决条件检查

若要验证环境,请打开提升的 PowerShell 会话并执行以下操作:
键入 winver.exe ,然后按 Enter 查看 Windows 设备的版本详细信息。
运行 $PSVersionTable.PSVersion。 验证主要版本至少为 5,次要版本至少为 1。 详细了解如何在 Windows 上安装 PowerShell。
运行下面的命令(PowerShell)。 当你是内置管理员组的成员时,输出将显示 True。
(New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

3.安装适用于 Windows 的 OpenSSH

可以使用 Windows Server 2019 和 Windows 10 设备上的 Windows 设置安装这两个 OpenSSH 组件。
若要安装 OpenSSH 组件:

(1)打开“设置”,选择“应用”,然后选择“可选功能”。

(2)扫描列表,查看是否已安装 OpenSSH。 如果未安装,请在页面顶部选择“添加功能”,然后:

找到“OpenSSH 客户端”,然后选择“安装”
找到“OpenSSH Server”,然后选择“安装”

(3)设置完成后,回到“应用”和“可选功能”,并确认 OpenSSH 已列出。

(4)打开“服务”桌面应用。 (选择“开始”,在搜索框中键入 services.msc ,然后选择“服务”应用或按 ENTER。)

(5)在详细信息窗格中,双击“OpenSSH SSH 服务器”。

(6)在“常规”选项卡上的“启动类型”下拉菜单中,选择“自动”。

(7)若要启动服务,请选择“启动”。

备注:
安装 OpenSSH 服务器将创建并启用一个名为 OpenSSH-Server-In-TCP 的防火墙规则。 这允许端口 22 上的入站 SSH 流量。 如果未启用此规则且未打开此端口,那么连接将被拒绝或重置。

4.连接到 OpenSSH 服务器

Shell或PowerShell中依照下面格式“ssh domain\username@servername”输入命令,样例如下:

ssh administrator@192.168.13.142

正常输入密码即可连接上,然后就可以在控制台输入命令运行了。

参考链接:
适用于 Windows 的 OpenSSH 入门

三、OpenSSH for Windows 中基于密钥的身份验证

   下面是摘抄的ssh连接的全部内容,如果只是关注linux使用ssh连接windows服务器,则只需要关注“部署公钥”相关的部分。

1.部署私钥

PowerShell脚本说明:

# By default the ssh-agent service is disabled. Configure it to start automatically.
# Make sure you're running as an Administrator.
Get-Service ssh-agent | Set-Service -StartupType Automatic# Start the service
Start-Service ssh-agent# This should return a status of Running
Get-Service ssh-agent# Now load your key files into ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519

将密钥添加到客户端上的 ssh-agent 后,ssh-agent 会自动检索本地私钥并将其传递给 SSH 客户端。

2.部署公钥

   要使用上面创建的用户密钥,必须将公钥 (.ssh\id_ed25519.pub) 的内容作为文本文件放在服务器上。 文件的名称和位置取决于用户帐户是本地管理员组的成员还是标准用户帐户。 以下部分涵盖标准和管理用户。特别提醒,下面的PowerShell脚本,都是需要在其他windows机器的PowerShell终端上执行,实现远程配置功能。

(1)标准用户

   公钥 (.ssh\id_ed25519.pub) 的内容需放置在服务器上的一个名为 authorized_keys 的文本文件中,该文件位于 C:\Users\username.ssh\。 可以使用 OpenSSH scp 安全文件传输实用工具或使用 PowerShell 将密钥写入文件来复制公钥。
以下示例将公钥复制到服务器(其中“username”替换为你的用户名)。 最初,你需要使用服务器的用户帐户的密码。
PowerShell脚本说明:

# Get the public key file generated previously on your client
$authorizedKey = Get-Content -Path $env:USERPROFILE\.ssh\id_ed25519.pub# Generate the PowerShell to be run remote that will copy the public key file generated previously on your client to the authorized_keys file on your server
$remotePowershell = "powershell New-Item -Force -ItemType Directory -Path $env:USERPROFILE\.ssh; Add-Content -Force -Path $env:USERPROFILE\.ssh\authorized_keys -Value '$authorizedKey'"# Connect to your server and run the PowerShell using the $remotePowerShell variable
ssh username@domain1@contoso.com $remotePowershell

(2)管理用户

公钥 (.ssh\id_ed25519.pub) 的内容需放置在服务器上的一个名为 administrators_authorized_keys 的文本文件中,该文件位于 C:\ProgramData\ssh\。 可以使用 OpenSSH scp 安全文件传输实用工具或使用 PowerShell 将密钥写入文件来复制公钥。 此文件上的 ACL 需要配置为仅允许访问管理员和系统。
以下示例将公钥复制到服务器并配置 ACL(其中“username”替换为你的用户名)。 最初,你需要使用服务器的用户帐户的密码。
备注:此示例演示了创建 administrators_authorized_keys 文件的步骤。 这仅适用于管理员帐户,并且在用户配置文件位置内的必须是用户而不是每用户文件。
PowerShell脚本说明:

# Get the public key file generated previously on your client
$authorizedKey = Get-Content -Path $env:USERPROFILE\.ssh\id_ed25519.pub# Generate the PowerShell to be run remote that will copy the public key file generated previously on your client to the authorized_keys file on your server
$remotePowershell = "powershell Add-Content -Force -Path $env:ProgramData\ssh\administrators_authorized_keys -Value '$authorizedKey';icacls.exe ""$env:ProgramData\ssh\administrators_authorized_keys"" /inheritance:r /grant ""Administrators:F"" /grant ""SYSTEM:F"""# Connect to your server and run the PowerShell using the $remotePowerShell variable
ssh username@domain1@contoso.com $remotePowershell

PowerShell实际样例如下:

# Get the public key file generated previously on your client
$authorizedKey = Get-Content -Path C:\Users\tom\.ssh\id_ed25519.pub# Generate the PowerShell to be run remote that will copy the public key file generated previously on your client to the authorized_keys file on your server
$remotePowershell = "powershell Add-Content -Force -Path $env:ProgramData\ssh\administrators_authorized_keys -Value '$authorizedKey';icacls.exe ""$env:ProgramData\ssh\administrators_authorized_keys"" /inheritance:r /grant ""Administrators:F"" /grant ""SYSTEM:F"""# Connect to your server and run the PowerShell using the $remotePowerShell variable
ssh administrator@192.168.13.142 $remotePowershell

参考链接:
OpenSSH for Windows 中基于密钥的身份验证

四、实际验证

上述步骤完成后,在配置好私钥的Wndwos或Linux机器上都可以使用下面的命令ssh远程连接Windows服务器,且不需要输入密码:

ssh administrator@192.168.13.142

相关文章:

如何在Linux机器上使用ssh远程连接Windows Server服务器

如何在Linux机器上使用ssh远程连接Windows Server服务器 一、源起二、使用ssh远程连接Windows1.先决条件(1)至少运行 Windows Server 2019 或 Windows 10(内部版本 1809)的设备。(2)PowerShell 5.1 或更高版…...

NLP常见任务的分类指标

自然语言处理(NLP)任务的评估指标因任务类型和目标而异。以下是一些常见的 NLP 任务以及相应的评估指标: 1、 文本分类任务: 准确率(Accuracy):分类正确的样本数量与总样本数量的比例。 精确率…...

node插件express(路由)的插件使用(二)——body-parser和ejs插件的基本使用

文章目录 前言一、express使用中间件body-parser获取请全体的数据1. 代码2. 效果 二、express使用ejs(了解即可)1.安装2.作用3.基本使用(1)代码(2)代码分析和效果 4.列表渲染(1)代码…...

学习c++的第十天

目录 类 & 对象 类定义 对象的建立和使用 构造函数(Constructor) 析构函数(Destructor) 拷贝构造函数 扩展知识 this指针 友元函数的使用方法 友元类的使用方法 常数据的使用及初始化 类 & 对象 什么是类?什么是对象?对于面向对象的…...

895. 最长上升子序列

题目&#xff1a; 895. 最长上升子序列 - AcWing题库 思路&#xff1a;dp 代码&#xff1a; #include<iostream> #include<cstdio> #include<cmath> using namespace std; typedef long long ll; const int N1010; int f[N];//表示以i结尾的最大上升子序列…...

岩土工程铁路桥梁监测中智能振弦传感器的应用方案

岩土工程铁路桥梁监测中智能振弦传感器的应用方案 智能振弦传感器是近年来岩土工程和桥梁监测领域的重要技术之一。它具有高灵敏度、高精度、高可靠性等优点&#xff0c;并且能够实时对结构物振动进行监测和分析。本文针对岩土工程铁路桥梁监测中智能振弦传感器的应用方案进行…...

【数智化人物展】觉非科技CEO李东旻:数据闭环,智能驾驶数智时代发展的新引擎...

李东旻 本文由觉非科技CEO李东旻投递并参与《2023中国企业数智化转型升级先锋人物》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 数智化的主要作用是帮助决策。它的核心是大数据&#xff0c;以大数据为基础&#xff0c;匹配合适的AI技术&#xff0c;促使数…...

字符型液晶显示器LCD 1602的显示控制(Keil+Proteus)

前言 趁机把LCD 1602的实验完成了&#xff0c;那个电路图有几个地方没弄懂&#xff0c;但是去掉也没有报错&#xff0c;就没管了。 LCD1602_百度百科 (baidu.com)https://baike.baidu.com/item/LCD1602/6014393?frge_ala LCD1602液晶显示屏通过电压来改变填充在两块平行板之…...

为什么我学了几天 STM32 感觉一脸茫然?

今日话题&#xff0c;为什么我学了几天 STM32 感觉一脸茫然&#xff1f;从51单片机过渡到STM32&#xff0c;首先需要理解“单片机”究竟是什么&#xff0c;编程语言虽然重要&#xff0c;但也需要深入理解。51单片机的控制相对简单&#xff0c;基本是函数调用&#xff0c;通过给…...

DC-DC降压芯片120V转12V5A大功率SL3038电源芯片

本文将介绍一款DC-DC降压芯片&#xff0c;将120V的电压转换为12V5A的大功率输出&#xff0c;使用SL3038电源芯片实现。在开始介绍之前&#xff0c;我们先来了解一下DC-DC降压芯片和SL3038电源芯片的基本原理和特点。 DC-DC降压芯片是一种常见的电源管理芯片&#xff0c;它可以将…...

CE认证木质玩具TUME外贸出口测试报告解析

木制玩具&#xff0c;顾名思义&#xff0c;使用木制原料制成的玩具。木制玩具具有牢固耐玩、安全卫生&#xff0c;摔不碎&#xff0c;不生锈&#xff0c;无锋利棱角的特点。深受大家的喜爱。木质玩具出口需办理CE认证。 CE认证是一种安全认证标志&#xff0c;代表欧盟认可的&a…...

oracle_19c 安装

oracle安装部署 1、安装docker,docker-compose环境。 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun curl -L "https://github.com/docker/compose/releases/download/1.14.0-rc2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/b…...

随时随地时时刻刻使用GPT类应用

疑问 很多人说GPT的广泛使用可能会使人们失业&#xff0c;会对一些互联网公司的存活造成挑战&#xff0c;那么这个说法是真的吗&#xff1f; 这个说法并不完全准确。虽然GPT等AI技术的广泛应用可能会对某些行业和职业产生影响&#xff0c;但并不意味着它会导致人们失业或互联网…...

运动检测辅助系统

运动检测辅助系统是一种结合了传感器技术、数据处理技术和智能算法的系统&#xff0c;旨在帮助用户监测、评估和改善其运动行为及健康状况。这类系统通常利用多种传感器&#xff08;如运动传感器、摄像头、心率监测器等&#xff09;采集用户的运动数据&#xff0c;并通过数据处…...

0002Java安卓程序设计-基于Uniapp+springboot菜谱美食饮食健康管理App

文章目录 开发环境 《[含文档PPT源码等]精品基于Uniappspringboot饮食健康管理App》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;776871563 功能介绍&#xff…...

LeetCode算法题解(回溯)|39. 组合总和、40. 组合总和 II、131. 分割回文串

一、39. 组合总和 题目链接&#xff1a;39. 组合总和 题目描述&#xff1a; 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意…...

基于springboot实现招聘信息管理系统项目【项目源码+论文说明】

基于springboot实现招聘信息管理系统演示 摘要 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括招聘信息管理系统的网络应用&#xff0c;在外国招聘信息管理系统已经是很普遍的方式&#xff0c;不过国内的线上管理系统可能还…...

Freeswitch实现软电话功能

1.话务步骤 分机注册->登录->拨打电话-> /*<--注册分机-->*/ EslMessage eslMessage1 inboundClient.sendApiCommand("callcenter_config agent set contact", "21009default user/1000"); System.out.println("#####dial eslMessa…...

RMI初探

接口 import java.rmi.Remote; import java.rmi.RemoteException;public interface IFoo extends Remote {String say(String name) throws RemoteException; }import java.rmi.Remote; import java.rmi.RemoteException;public interface IBar extends Remote {String buy(Str…...

NLP之BM25:BM25算法的简介、相关库、案例应用之详细攻略

NLP之BM25:BM25算法的简介、相关库、案例应用之详细攻略 目录 相关文章 NLP之BM25:BM25算法的简介、相关库、案例应用之详细攻略 Py之rank_bm25:rank_bm25的简介、安装、使用方法 BM25算法的简介...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

通过MicroSip配置自己的freeswitch服务器进行调试记录

之前用docker安装的freeswitch的&#xff0c;启动是正常的&#xff0c; 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...

文件上传漏洞防御全攻略

要全面防范文件上传漏洞&#xff0c;需构建多层防御体系&#xff0c;结合技术验证、存储隔离与权限控制&#xff1a; &#x1f512; 一、基础防护层 前端校验&#xff08;仅辅助&#xff09; 通过JavaScript限制文件后缀名&#xff08;白名单&#xff09;和大小&#xff0c;提…...