Windows 10下使用PuTTY连接传输文件遇网络错误求助
解决PuTTY在Windows 10下的"ssh_init: Network error: Cannot assign requested address"错误
我之前帮朋友排查过这个PuTTY的错误,结合Windows 10环境下的常见场景,这个ssh_init: Network error: Cannot assign requested address错误大多和网络配置、目标地址有效性或者PuTTY自身设置有关,下面分情况给你具体的排查和解决步骤:
1. 目标主机地址错误或网络不可达
这是最常见的原因,先从最基础的地方排查:
- 仔细核对你输入的远程主机IP/域名,别犯低级错误(比如把
192.168.1.10写成192.168.1.100,或者把内网IP当成公网IP用来连接外部服务器)。 - 打开Windows命令提示符,用
ping 目标主机地址测试连通性,如果ping不通,说明网络层面就没连上目标主机:- 确认目标主机是否开机、是否处于同一局域网(如果是内网连接)。
- 检查目标主机的防火墙是否放行22端口(SSH默认端口),如果是公网服务器,还要确认服务商的安全组是否开放了22端口。
- 也可以用
telnet 目标主机地址 22测试端口是否开放,如果提示“无法打开到主机的连接”,说明端口被拦截或服务未启动。
2. 本地网络适配器冲突或异常
Windows的多网卡(有线、无线、虚拟网卡)有时候会导致IP绑定问题:
- 先尝试重置当前网络适配器:打开「控制面板→网络和共享中心→更改适配器设置」,右键你正在使用的网卡(比如Wi-Fi或以太网),选择「禁用」,等待5秒后再「启用」,然后重新尝试PuTTY连接。
- 如果你的电脑有虚拟网卡(比如VMware、VirtualBox的虚拟网络适配器),可以暂时禁用这些虚拟网卡,避免IP冲突干扰连接。
- 检查本地IP是否和局域网内其他设备冲突:如果是自动获取IP,改成手动设置一个静态IP(确保和网关在同一网段,且没有被其他设备占用)。
3. PuTTY会话配置或命令行参数错误
有时候旧的会话配置会留坑,或者命令行参数输入错误:
- 别用之前保存的PuTTY会话,新建一个全新的空白会话,手动输入目标主机地址和端口22,直接点击「Open」测试连接,排除旧配置的干扰。
- 如果是用命令行工具(比如
pscp传输文件、plink连接),仔细检查命令参数:
比如正确的pscp传输命令应该是:
别把pscp C:\local\file.txt username@target_host:/remote/path/target_host写成了本地IP,也别加了多余的参数(比如错误指定了本地绑定地址)。
4. Windows防火墙或杀毒软件拦截
Windows Defender或第三方杀毒软件可能会拦截PuTTY的SSH请求:
- 暂时关闭Windows Defender防火墙测试:打开「控制面板→Windows Defender防火墙→启用或关闭Windows Defender防火墙」,选择「关闭」(测试完记得重新打开),如果此时能正常连接,就给PuTTY添加防火墙例外规则:
在防火墙的「高级设置」里,新建一条入站/出站规则,允许PuTTY.exe(和pscp.exe、plink.exe)通过防火墙。 - 检查第三方杀毒软件的网络防护模块,看看是否把PuTTY加入了黑名单,改成「允许」即可。
5. 远程主机SSH服务配置异常
如果前面的排查都没问题,可能是远程主机的SSH服务设置有问题:
- 登录远程主机,打开SSH配置文件(通常是
/etc/ssh/sshd_config),检查两个关键参数:Port:确认是否设置为22(如果改成了其他端口,你需要在PuTTY里对应修改端口)。ListenAddress:如果设置成了特定IP,只有该IP能访问SSH服务,改成0.0.0.0允许所有IP访问。
- 修改配置后,重启SSH服务:比如Linux系统执行
systemctl restart sshd,然后再尝试连接。
内容的提问来源于stack exchange,提问作者user12799293




