win10开启sshd服务与配置nps内网穿透

本文讲述了开启win10 sshd服务并配置内网穿透的方法。

零、背景

有一台内网环境下的win10主机上存储着一些重要数据和程序,要在外部网络环境下访问这些数据,除远程桌面外希望有其他方法。

一、win10 sshd功能

参考:

首先区分一下ssh和sshd。ssh(Secure Shell Protocol)是一种用于远程登陆的加密网络传输协议,同时也是使用这一套协议进行远程登陆的客户端程序名。sshd(多一个字母d)则是远程登陆的服务端,其中字母d是单词daemon(守护进程)的缩写。

1. 开启功能

开启win10系统sshd功能的方法很简单:打开设置 → 应用 → 可选功能 → 添加可选功能 → 查看功能,在列表中找到OpenSSH服务端,点击安装既可,整个过程大约需要几分钟的时间。之后,在命令行提示程序(Windows Prompt/Powershell)中输入指令sshd,如果出现的反应是没有输出任何信息,或者出现一行报错: sshd re-exec requires execution with an absolute path ,则说明安装成功。

特别提示一下,对于sshd re-exec requires execution with an absolute path报错,解决方法是从绝对文件路径启动sshd程序,换句话说就是用C:/Windows/System32/OpenSSH/sshd.exe代替sshd指令本身。

2. 配置文件

做完前面的步骤之后,sshd依然不能算作已经开启,因为此时还差一个配置文件没有生成。根据网上的教程,第一次启动sshd会自动生成一个配置文件,但是经过实际测试并非如此。但是,也有文章提到sshd自带了一个配置文件模板在 C:\Windows\System32\OpenSSH\sshd_config_default 。将这份文件拷贝到sshd运行数据目录C:\ProgramData\ssh下,并修改部分配置(大部分不需要动),再运行sshd就可以了。

3. 免密登录

在客户端(本地电脑)上运行ssh-keygen,一路回车之后会生成两个文件,分别是id_rsaid_rsa.pub。将第二个文件的内容追加到 C:\ProgramData\ssh\administrators_authorized_keys 文件末尾既可。

二、基于nps的内网穿透

参考:

基于nps的内网穿透需要一台云服务器,如果没有则可以考虑使用花生壳等即开即用平台。

下面是针对已有云服务器的情况进行的说明:

假设我们已经有了一台Linux系统的云服务器,并且在云安全组中开放了需要的端口(nps需要8080、8024等端口)。我们现在需要从github的release界面中下载nps的客户端和服务端,前者下载windows版,并在前述内网主机上运行;后者则下载Linux版,在云服务器端运行。

启动nps服务端,在任意浏览器上通过8080端口访问云服务器,将会进入nps的控制面板。在这里,新建一个客户端实例,并添加tcp隧道,填写内网ip地址和端口号(sshd服务走22端口)。随后,在客户端列表中能够看到相应的客户端以及启动指令,例如./npc -server=[url]:[port] -vkey=[vkey] -type=tcp 这样。

接下来,在内网主机中,用命令提示符程序打开nps客户端的安装目录,使用上述命令启动npc(命令中的./npc改为.\npc.exe)。当输出的INFO中提示连接成功时,既可使用云服务器访问前述内网主机了。