无法使用 Ngrok 通过 SSH 连接到 Windows 机器

Unable to SSH to a Windows machine using Ngrok

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

这是我所做的。

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

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

我生成了 public 个密钥文件并发送到远程机器以通过 ssh 从。

ssh-keygen

我 changed/added 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).

SSH 到 Windows 有点浪费时间。不幸的是,他们的文档 https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement is outdated https://github.com/MicrosoftDocs/windowsserverdocs/issues/4598 不再有效。

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

本人未在 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 文件中专门拥有授权的公钥。将所有公钥添加到这两个文件不会对您造成伤害。 (或编辑 sshd_config 文件)

  • 重新启动 sshd 服务器

当 authorized_keys and/or sshd_config 文件更新后,您 必须 重新启动服务器。

stop-Service ssh
Start-Service sshd
  • SSH 进入

那就试试吧。

ssh user@192.168.1.2