即使在 Windows 防火墙设置中启用端口 22,它也不会打开

即使在 Windows 防火墙设置中启用端口 22,它也不会打开

我目前正在尝试通过 SHH 使用scpcmd 在我的两台本地计算机(运行 Linux 的笔记本电脑和运行 Windows 10 的 PC)之间传输文件,请参阅这里

我正在尝试从 Linux 笔记本电脑转移到 Windows PC。

但不幸的是,在Windows防火墙设置中创建新的入站规则后,我的端口22仍然没有打开。

我已使用此命令检查我的端口是否未打开:

netstat -a -n

netstat -ab

我还检查了我的规则是否已启用:

netsh firewall show config

并返回:

22     TCP       Activer Entrant               SSH

因此它应该可以工作,有什么线索可以表明问题可能出在哪里吗?

因为我使用 WSL2 来运行 Ubuntu,所以用户之间会发生冲突吗?比如我在 win shell 中的用户名与 Ubuntu 的用户名不同?

更新:禁用 Windows 防火墙,不允许端口 22 上的连接。

更新:Windows 机器上未启用 ssh-server

我已经通过sudo service ssh status 从我的 Windows 机器上输入 Linux shell 来检查它

所以我按照指示这里

然后我知道 ssh 已经安装并且 OpenSSH 也已安装,使用 PowerShell 中的这个 cmd:

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

返回:

Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed

Name  : OpenSSH.Server~~~~0.0.1.0
State : Installed

然后我使用这些cmd:

# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

两者都返回:

Path          :
Online        : True
RestartNeeded : False

然后我启动了 OpenSSH 服务器:

# Start the sshd service
Start-Service sshd

# OPTIONAL but recommended:
Set-Service -Name sshd -StartupType 'Automatic'

# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
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."
}

返回:Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists.

但后来我尝试使用这个 cmd 连接到 OpenSSH 服务器:

ssh username@servername

但我仍然无法连接,它返回:

ssh: connect to host XX.XXX.X.XXX port 22: Connection timed out

我已确保以管理员身份运行 PowerShell

我确保我的端口 22 现在已打开:

netstat -a -n

返回:

TCP    0.0.0.0:22             0.0.0.0:0              LISTENING

然后我输入:

netstat -a -b -n

返回:

 TCP    0.0.0.0:22             0.0.0.0:0              LISTENING
 [sshd.exe]

TCP    [::]:22                [::]:0                 LISTENING
 [sshd.exe]

另外,netsh firewall show config返回:

Domaine configuration du profil :
-------------------------------------------------------------------
Mode d’opération = Activer
Mode d’exception                    = Activer
Mode réponse multidiff/transmission = Activer
Mode de notification = Activer

Configuration des programmes autorisés pour le profil Domaine :
Mode     Direction du trafic  Nom / programme
-------------------------------------------------------------------

Configuration de port pour le profil Domaine :
Port   Protocole Mode     Direction du trafic   Nom
-------------------------------------------------------------------
22     TCP       Activer Entrant               SSH
53     TCP       Activer Entrant               Realtek AP UDP Prot
1542   UDP       Activer Entrant               Realtek WPS UDP Prot
1542   UDP       Activer Entrant               Realtek WPS TCP Prot

Standard configuration du profil (en cours) :
-------------------------------------------------------------------
Mode d’opération = Activer
Mode d’exception                    = Activer
Mode réponse multidiff/transmission = Activer
Mode de notification = Activer

Configuration de service pour le profil Standard :
Mode     Personnalisé Nom
-------------------------------------------------------------------
Activer  Non         Recherche du réseau

Configuration des programmes autorisés pour le profil Standard :
Mode     Direction du trafic  Nom / programme
-------------------------------------------------------------------
Activer  Entrant              audiorelay-tcp-private / C:\Program Files (x86)\AudioRelay\AudioRelay.exe

Configuration de port pour le profil Standard :
Port   Protocole Mode     Direction du trafic   Nom
-------------------------------------------------------------------
22     TCP       Activer Entrant               SSH
53     TCP       Activer Entrant               Realtek AP UDP Prot
1542   UDP       Activer Entrant               Realtek WPS UDP Prot
1542   UDP       Activer Entrant               Realtek WPS TCP Prot

Configuration du journal :
-------------------------------------------------------------------
Emplacement du fichier     = C:\Windows\system32\LogFiles\Firewall\pfirewall.log
Taille maximale de fichier = 4096 Ko
Paquets abandonnés         = Désactiver
Connexions                 = Désactiver

文件

C:\Windows\system32\LogFiles\Firewall\pfirewall.log

是空的。

更新:经过一番思考后,我记得我目前使用的是大学宿舍提供的“公共”以太网连接。

因此,我通过键入然后在 Chrome 选项卡中键入地址来查找我的默认网关 IP ipconfig,但它不起作用

*然后我想起我正在使用大学互联网

我进入他们的路由器设置页面并查找我的 IP 地址,发现它既不是我在互联网上输入“我的 IP 是什么”时找到的那个,也不是控制台中显示的默认网关的那个。

我的 uni 路由器声明的 IP 与我的网络设置中的 IPv4 匹配

但是当我尝试在选项卡中访问此 IP 时,我得到:ERR_CONNECTION_REFUSED

此外,在弄清楚我的真实 IP 后,我再次尝试使用 IPv4 地址连接到 SSH。我得到:

The authenticity of host 'xx.xxx.xxx.xx (xx.xxx.xxx.xx)' can't be established.
ECDSA key fingerprint is .
Are you sure you want to continue connecting (yes/no/[fingerprint])?

输入yes,然后:

Warning: Permanently added 'xx.xxx.xxx.xx' (ECDSA) to the list of known hosts.
Connection reset by xx.xxx.xxx.xx port 22

但它没有要求输入任何密码

因此再次输入ssh username@servername以进行连接,但我被要求输入密码

我尝试了几个,Permission denied, please try again.除了最后一个之外,每个都得到了

Permission denied (publickey,password,keyboard-interactive).

答案1

经过一番研究,我发现由于我使用的是大学互联网连接,所以我的 IP 地址既不是在 Google 上输入“我的 IP 是什么”获得的 IP 地址,也不是控制台中的默认网关 IP。

根据我的 uni 路由器服务页面上的文档,这是我的 IPv4 地址

从那里,我可以发送正确的请求以检查我的端口是否打开并连接到 SSH。

相关内容