社区的各位朋友大家好,我购买了一个 vpn,当尝试通过 ssh 连接时出现错误“连接超时“每次我尝试使用 putty 连接时,我都可以在远程桌面上进行连接。
我读过可能与防火墙有关的内容,我执行了以下操作“禁用防火墙或将文件添加.exe
到防火墙例外”我尝试了两者但错误仍然存在。
编辑:我尝试使用 Windows 10 从我的 PC 进行连接,我的 VPS 在 Ubuntu 上
还有其他解决办法吗?
答案1
“连接超时”通常表示某些防火墙阻止了连接。假设您的 VPN 在 PC 之间提供了不受限制的网络路径,则它可能位于:
- 在您的本地系统上(但如果您已添加
putty.exe
到防火墙例外,那么这应该不是问题) - 在远程系统上(请注意,在远程系统上,您必须允许 SSH 服务器进程,而不是
putty.exe
- PuTTY 只是一个客户端)
Windows 系统也不一定默认包含 SSH 服务器:在 PowerShell 中运行:
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Server*'
查看是否安装了 SSH 服务器,以及
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
如果需要的话可以安装它。
安装 SSH 服务器后,您还必须启动它并将其配置为在启动时自动启动。可以使用以下 PowerShell 命令完成此操作:
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
以下是用于配置 Windows 防火墙以接受传入 SSH 连接的 PowerShell 代码片段(您可能需要在远程 PC 上运行此代码):
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}