在Windows下安装OpenSSH Server&部署秘钥

2022-12-02 11:42:26 浏览数 (1)

这有什么用?在这之前我先讲述一个亲身经历

(本教程可能会撤很多别的,需要可以通过标题直接调到最后面)

我在网上看到几乎全部都是教你使用OpenSSH客户端连接Linux的,几乎没有连接Windows的,秘钥部署也几乎没有,因此才写了这篇文章

RDP在“请稍后”界面卡死

有一天我和往常一样在学校使用RDP连接家里电脑,因为学校电脑配置差反应慢,网络还卡,平均每个人只有不到1mbps/s,当时正在连接RDP,等待了许久重连了n次终于连接上了,但是卡在“请稍后”。

电脑并没有卡,只是RDP卡了,这种情况要解决,要么正常用电脑登录一次账号,要么重启电脑。但是由于我人在学校加上电脑中没有安装任何远程控制软件(如向日葵、todesk、vnc)也没有搭配任何开机硬件(开机插座、开机插排等)那个时候我知道这是一种非常不保险的手段,如果发生蓝屏、死机等我将会直接与电脑失联,但是我又不想在电脑上安装太多的软件而且这些软件还会消耗系统资源,有的甚至会对隐私造成威胁,如果不装软件,直接使用开机插座插排等,那不是相当于直接拔电源吗(有一次我在学校我家长直接把我电脑插头拔了,后来扫盘一片红,所以就算是这种没办法的情况也绝对不接受拔电源)?我之前也考虑过使用DIY机械臂点击机箱上的重启键,我也在网络上搜索过,并没有搜索到,也没有人出类似的视频,唯一类似的是国外一个叫手指机器人的产品,但是过于昂贵。我尝试在网上搜索各种远程重启局域网电脑(我可以正常连接到同局域网下的另一台电脑)……可是搜索出的全是什么黑客渗透破解密码远程关闭局域网电脑

我知道这些教程都是扯淡,怎么可能跑几个字典就能跑出密码,我又搜索有密码如何重启局域网电脑等各种搜索词,经过了n次n个教程的尝试,我得出了结论:“拒绝访问”

是的,在默认的情况下,系统拒绝了一切的远程重启等操作,甚至是说,完全无法从局域网或远程控制到这台电脑。

后来实在没办法,我只能使用极为先进的电话呼叫手段(bushi)来重启了电脑。

当时重启后我马上安装了向日葵,以后一旦遇到此类情况就可以马上重启电脑。当然还有几次我用安卓平台的RDP连接时对面电脑能正常连接上,但是会出现“白屏”,整个电脑全白,这种时候根据我的发现,任务管理器等快捷键是无效的,只需要点几下esc再ctrl alt del即可进入安全选项,然后点击任务管理器重启资源管理器即可

远程控制电脑

后来我打算在本地计算机上启动一下允许被局域网的电脑验证用户名和密码后强制关机,然后我仔细一想,为什么只是关机重启这么简单呢,为何不直接能远程调用cmd,这样不仅可以关机重启还能进行电脑上的几乎所有操作

我记得是有很多方法远程连接CMD的,但是今天发现要么就是营销后扯淡要么就是来炫耀根本没想教会你,要么就是那些“黑客”用字典破解密码横向渗透的装x文章

在Windows上搭建Open SSH Server

我看了网上大部分教程,原本图形界面点几下的东西偏要用cmd操作一堆,对新手非常的不友好,所以才写的这篇文章。

其实搭建这个非常的简单

安装open ssh server

Windows 11

打开设置选择应用-可选功能

选择查看功能,然后选择open ssh 服务器open ssh 客户端,选择下一步即可

Windows 10

在设置中选择应用-应用和功能-可选功能

选择添加功能,然后选择open ssh 服务器open ssh 客户端,选择安装即可

启动和设置开机自启

在开始菜单中搜索服务,然后打开

找到OpenSSH SSH Server,双击进去,将启动类型设置为自动,然后点击启动,然后确定即可

测试

使用powershell或cmd连接ssh

代码语言:javascript复制
ssh <username>@<ip>

首次连接需信任指纹秘钥,然后输入密码即可

ssh连接后是管理员身份是cmd

实际测试请查看本文最后部分

部署秘钥登录(竟然都部署秘钥了,想必也不是新手了吧,咱就用方便点的方法)

参考:https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_keymanagement

先生成一个秘钥,位置名字随意

代码语言:javascript复制
ssh-keygen -t rsa

以下操作需要管理员权限

生成好之后编辑C:ProgramDatasshsshd_config

将以下内容取消注释

代码语言:javascript复制
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys
PasswordAuthentication yes

将以下内容

代码语言:javascript复制
PasswordAuthentication yes

改为以下内容

代码语言:javascript复制
PasswordAuthentication no

再修改以下内容中的ssh公钥路径

代码语言:javascript复制
AuthorizedKeysFile  .ssh/authorized_keys

注释以下内容

代码语言:javascript复制
 #Match Group administrators
       #AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

重启sshd

代码语言:javascript复制
Restart-Service sshd

部署完成

尝试远程关机(重启)

由于是演示,我设置个延时

利用其他电脑连接此电脑的ssh执行shutdown命令,如图

代码语言:javascript复制
shutdown /r /t 600

常见问题

秘钥连接时提示如下报错(敏感信息使用“***”)

代码语言:javascript复制
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for '***' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "***": bad permissions
***@***: Permission denied (publickey,keyboard-interactive).

将私钥文件权限改为仅本账号且禁用父级继承即可

0 人点赞