无法使用 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_keys
和 C:\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
我正在尝试使用 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_keys
和C:\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