OpenSSH 是安全 Shell (SSH) 工具的开放源代码版本,Linux 及其他非 Windows 系统的管理员使用此类工具跨平台管理远程系统。 OpenSSH 在 2018 年秋季已添加至 Windows,并包含在 Windows 10 和 Windows Server 2019 中。

SSH 基于客户端-服务器体系结构,用户在其中工作的系统是客户端,所管理的远程系统是服务器。 OpenSSH 包含一系列组件和工具,用于提供一种安全且简单的远程系统管理方法,其中包括:

  • sshd.exe:它是远程所管理的系统上必须运行的 SSH 服务器组件
  • ssh.exe:它是在用户的本地系统上运行的 SSH 客户端组件
  • ssh-keygen.exe:为 SSH 生成、管理和转换身份验证密钥
  • ssh-agent.exe:存储用于公钥身份验证的私钥
  • ssh-add.exe:将私钥添加到服务器允许的列表中
  • ssh-keyscan.exe:帮助从许多主机收集公用 SSH 主机密钥
  • sftp.exe:这是提供安全文件传输协议的服务,通过 SSH 运行
  • scp.exe:是在 SSH 上运行的文件复制实用工具

安装

若要使用 PowerShell 安装 OpenSSH,请先以管理员身份运行 PowerShell。 为了确保 OpenSSH 可用,请运行以下 cmdlet:

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

如果两者均尚未安装,则此操作应返回以下输出:

Name  : OpenSSH.Client~~~~0.0.1.0
State : NotPresent Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

然后,根据需要安装服务器或客户端组件:

# 安装 OpenSSH 客户端
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 # 安装 OpenSSH 服务端
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

这两者应该都会返回以下输出:

Path          :
Online : True
RestartNeeded : False

启动与配置

若要启动并配置 OpenSSH 服务器来开启使用,请以管理员身份打开 PowerShell,然后运行以下命令来启动 sshd service

# 启动 sshd 服务
Start-Service sshd # 设置 sshd 服务自动运行
Set-Service -Name sshd -StartupType 'Automatic' # 检测防火墙是否放开 22 端口
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}

连接服务器

安装后,可从使用 PowerShell 安装了 OpenSSH 客户端的 Windows 10 或 Windows Server 2019 设备连接到 OpenSSH 服务器,如下所示。 请务必以管理员身份运行 PowerShell:

ssh username@servername

可以尝试在服务器使用 127.0.0.1 本地连接测试,因为 Windows 显示用户名和实际用户名可能不一致,所以通过 net user 获取正确用户名进行连接。

连接后,会收到如下所示的消息:

The authenticity of host 'servername (10.00.00.001)' can't be established.
ECDSA key fingerprint is SHA256:(<a large string>).
Are you sure you want to continue connecting (yes/no)?

选择“是”后,该服务器会添加到包含 Windows 客户端上的已知 SSH 主机的列表中。系统此时会提示你输入密码。 作为安全预防措施,密码在键入的过程中不会显示。

连接后,你将看到 Windows 命令行界面提示符:

domain\username@SERVERNAME C:\Users\username>

卸载

# 卸载 OpenSSH 客户端
Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 # 卸载 OpenSSH 服务端
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

如果在卸载时服务正在使用中,稍后可能需要重启 Windows。

原文链接:开发者工具 | 7Wate

最新文章

  1. Code First :使用Entity. Framework编程(7) ----转发 收藏
  2. JAVA解析XML的四种方法
  3. python随机服务器的双线出口ip发送邮件
  4. 17.(转) Android之四大基本组件介绍与生命周期
  5. 温故而知新 clone
  6. [转载] 已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc),编写函数 strcpy(C++版)
  7. Android 内存相关 onTrimMemory,onLowMemory,MemoryInfo()
  8. document.body.clientHeight与document.documentElement.clientHeight
  9. MDK建立STM32F103*开发模板
  10. 开源 java CMS - FreeCMS2.1公布
  11. WebKit介绍及总结(一)
  12. Struts2-2.了解struts.xml&gt;package&gt;action&gt;result的name属性
  13. c++银行家算法
  14. Python——爬虫——爬虫的原理与数据抓取
  15. 在Eclipse中创建maven项目出现的环境警告 j2se-1.5
  16. MySQL 服务常用操作命令
  17. Go语言学习笔记(1)——Hello World!
  18. pdo 操作
  19. Mac部分软件安装教程
  20. java实验五实验报告

热门文章

  1. C++ &quot;链链&quot;不忘@必有回响之双向链表
  2. Nginx支持web界面执行bash|python等系统命令和脚本,可以传递参数
  3. 获取 Docker 容器的 PID 号
  4. 监控Redis集群--废弃,使用新教程
  5. [题解] Atcoder AGC 005 F Many Easy Problems NTT,组合数学
  6. Go微服务实战 - 从0到1搭建一个类Instagram应用(持续更新)
  7. 20220729 - DP训练 #2
  8. 大文件分片上传,后端拼接保存(前端:antd;后端:.Net 5 WebAPI)
  9. 前端性能优化——首屏时间&amp;&amp;白屏时间
  10. VS使用正则表达式删除程序中的空行