Ubuntu通过ssh公钥验证远程连接到Windows

网上很多资料都是windows宿主机通过ssh连接到ubuntu虚拟机,那么这篇文章实现一下ubuntu虚拟机通过ssh连接windows宿主机,这样ubuntu和windows之间也可以很方便的使用scp命令互相传输文件。

当然,ubuntu不是虚拟机也行,只要配置好windows服务端,都可以通过ssh远程连接到windows。你甚至可以用ipad通过ssh连接到windows。

建议读者先阅读国外的资料(中文博客的质量实在是一言难尽),参考:

1. 安装SSH sever

打开PowerShell。如果Windows没有ssh的server服务,首先安装一下。

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

$ Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed

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


$ Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Path          :
Online        : True
RestartNeeded : False


$ Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed

Name  : OpenSSH.Server~~~~0.0.1.0
State : Installed

启动server:

Start-Service sshd
#Get-Service sshd 查看是否启动

(可选)设置为自启动:

Set-Service -Name sshd -StartupType 'Automatic'

2022.11.15 更新

(可选)设置ssh进入的默认终端为PowerShell(添加注册表项):

此处一定要慎重,不要轻易更改注册表,除非你知道自己在做什么。

通过Get-Command pwsh查看pwsh.exe的路径:

Get-Command pwsh

# 结果显示:
CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     pwsh.exe                                           7.2.7.0    C:\Program Files\PowerShell\7\pwsh.exe

设置ssh进入的默认终端为PowerShell(添加注册表项):

特别注意:以下的pwsh.exe路径(比如"C:\Program Files\PowerShell\7\pwsh.exe")一定要和你自己电脑里的pwsh.exe的路径对上(可以通过Get-Command pwsh查看其路径)

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\PowerShell\7\pwsh.exe" -PropertyType String -Force

# 结果显示
DefaultShell : C:\Program Files\PowerShell\7\pwsh.exe
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE
PSChildName  : OpenSSH
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry

2. Ubuntu通过ssh免密登录Windows

在windows中,在~/.ssh目录下新建 authorized_keys (不带任何扩展名)。

在ubuntu中,将~/.ssh下的id_rsa.pub内容复制到windows的~/.ssh/authorized_keys

(如果ubuntu下没有公钥~/.ssh/id_rsa.pub,可用命令ssh-keygen -t rsa来生成)

如果Windows是 1809 或更高版本,则需要将C:\ProgramData\ssh\sshd_config文件中的以下几行注释掉:

# Match Group administrators                                                    
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys  

然后使用命令 Restart-Service sshd 重启sshd服务。

最后,在ubuntu中,输入命令ssh <serverusername>@<serverhostname>,即可实现ssh免密登录到windows。

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nefu-ljw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值