Windows 服务器核心(Server-Core)配置 SSH 远程登录

Windows Server Core 是微软从 Windows Server 2008 版开始推出的新版本。它只有命令行,没有图形桌面(当然,基本的图形界面还是具备的,可以运行部分图形界面软件,如 Notepad3),也没有 MMC(管理控制台)。对服务器的管理,需要通过 PowerShell 或 CMD 的命令行来进行。
要管理服务器,一种办法是通过 RDP 远程登录到服务器上,然后在服务器上运行命令,另一种方法是通过 SSH 远程连接到服务器上,然后在 SSH 终端上运行命令。第二种方法对带宽和网速要求低,所以更受网络管理员青睐。本文就介绍在 Windows Server Core 上配置 SSH 服务器并实现远程登录。
本文所讲的方法适用于 Windows Server 2016 至今的所有版本。
1 安装 OpenSSH
首先需要通过 RDP 连接到服务器,然后通过命令行操作在服务器上安装 OpenSSH Server。文中在服务器上的所有操作,都是在 RDP 远程桌面中进行的。
操作步骤如下:
若要使用 PowerShell 安装 OpenSSH,请先以管理员身份运行 PowerShell:
1 | |
然后根据需要安装服务器或客户端组件(上面可以看见Client已经安装)下面我们直接安装Server端即可:
1 | |
安装完成会返回以下输出:
1 | |
启动并配置 SSH 服务器自动启动:
1 | |
查看防火墙规则,应该有一个名为“OpenSSH Server In TCP”的防火墙规则,应该启用该规则:
1 | |
如果这条防火墙规则不存在,请创建一个:
1 | |
测试是否正常连接(假设服务器的 IP 是 999.999.999.999)
1 | |
2 改端口
把默认的端口 22 改成不常用的端口,例如 22345,以避免恶意扫描。
操作步骤如下:
打开服务器的 C:\ProgramData\ssh\sshd_config 文件,找到 #Port 22,删除 # 号,另起一行,输入 Port 22345。保存退出。
重启 sshd 服务
1 | |
新建一条防火墙规则:
1 | |
在 VPS 的 Web 管理页面(我用的是 Azure),新建一条规则,开放 22345 端口。
测试通过 22345 端口是否正常连接到服务器:
1 | |
确定可以通过 SSH 连接 22345 端口远程登录服务器以后,原来的 22 端口需要关闭。
1 | |
3 配置免密登录
操作步骤如下:
在本地电脑生成一对公钥和私钥:
1 | |
用 Notepad3 或 Notepad++ 之类支持修改文件编码的编辑器打开公钥文件 id_rsa.pub,将换行符从 CRLF 改成 LF,如果有必要的话把编码也改成无 BOM 的 UTF-8。
在本地将 id_rsa.pub 上传到服务器的 C:\Users\Kukmoon\.ssh 文件夹。
在服务器上把 id_rsa.pub 改名为 authorized_keys。
修改服务器上 authorized_keys 文件的属性:
1 | |
打开服务器的 C:\ProgramData\ssh\sshd_config 文件,找到以下三条,去掉它们前面的 # 号:
1 | |
确保以下两条前面有 # 号:
1 | |
测试通过 22345 端口是否正常连接到服务器。
1 | |
4 图片版权
题图:https://4sysops.com/archives/windows-server-2012-server-core-part-5-tools/
头图:https://pxhere.com/zh/photo/1164378
5 参考文献
