无法使用 Ngrok SSH 到 Windows 机器

Posted

技术标签:

【中文标题】无法使用 Ngrok SSH 到 Windows 机器【英文标题】:Unable to SSH to a Windows machine using Ngrok 【发布时间】:2021-07-15 12:08:36 【问题描述】:

我正在尝试使用 ngrok 从互联网上的远程计算机通过 SSH(公钥身份验证)连接到 Windows 用户。 但显然不起作用。

这是我所做的。

我在 windows 上安装并激活了 SSH。

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

我生成了公钥文件并发送到远程机器上 ssh。

ssh-keygen

我在 SSH 设置文件“C:\ProgramData\ssh\sshd_config”中更改/添加了以下行

PermitRootLogin yes
AllowUsers otheruser
PubkeyAuthentication yes 
PasswordAuthentication no 

我重新启动了 ssh 服务器以应用设置更改。

net stop sshd ; net start sshd

我安装了 ngrok 并运行了 ngrok

./ngrok tcp 22
# got "6.tcp.ngrok.io:25252"

我尝试从远程机器 ssh 到 windows 机器,使用“tmp”密钥文件给用户“tmp”。

ssh -i "C:\pg\.ssh\tmp" tmp@6.tcp.ngrok.io -p 25252

失败了。

ssh -i "C:\pg\.ssh\tmp" tmp@6.tcp.ngrok.io -p 25252
Enter passphrase for key 'C:\pg\.ssh\tmp':
tmp@6.tcp.ngrok.io: Permission denied (publickey,keyboard-interactive).

【问题讨论】:

【参考方案1】:

SSH 到 Windows 有点浪费时间。他们的文档 https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement 已经过时了 https://github.com/MicrosoftDocs/windowsserverdocs/issues/4598 并且不再有效,很遗憾。

如果您使用的是 Windows 10,我建议您在 Windows 10 上使用 WSL Linux。它基本上是 Windows 上的 Linux 机器,但也可用于 SSH 功能。 WSL SSHing 确实可以像在 Linux 机器上一样完美地工作。

【讨论】:

【参考方案2】:

我本人未在 Ngrok 上进行测试,但请尝试以下步骤。

安装功能
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
启动 sshd 服务器(可选择将服务添加到自动启动)
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
将以下内容添加到C:\ProgramData\ssh\sshd_config(路径可能不同)

注意StrictModes no

PubkeyAuthentication yes
PasswordAuthentication no
StrictModes no
将您的客户端发布密钥(或由ssh-keygen 新生成)添加到服务器的C:\ProgramData\ssh\administrators_authorized_keysC:\Users\user\.ssh\authorized_keys

请注意,不仅要输入authorized_keys,还要输入administrators_authorized_keys。因为如果您是服务器上的管理员,您需要在 administrators_authorized_keys 文件中专门拥有授权的 pub 密钥。将所有 pub 密钥添加到这两个文件不会对您造成伤害。 (或编辑sshd_config 文件)

重启 sshd 服务器

必须在其 authorized_keys 和/或 sshd_config 文件更新时重新启动服务器。

stop-Service ssh
Start-Service sshd
SSH 进入

那就试试吧。

ssh user@192.168.1.2

【讨论】:

以上是关于无法使用 Ngrok SSH 到 Windows 机器的主要内容,如果未能解决你的问题,请参考以下文章

无法在 ngrok 中为 ssh 使用 remote-addr

使用 ngrok 在 Windows PC 上为 Slack 本地开发时无法运行 sudo

Telegram Webhook 和 Ngrok 无法正常工作

Centos 搭建ngrok服务

如何通过 ssh 连接到 ngrok 自托管服务器

如何修复 ngrok 转发端口?