我目前正在尝试通过 SHH 使用scp
cmd 在我的两台本地计算机(运行 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。