我尝试通过 ssh 从家庭网络外部连接到我的家庭服务器,但没有得到任何响应。
当我尝试在本地 ssh 该服务器时,一切都很好。
但是当我从外部执行此操作时,服务器没有响应:
- 我有公共动态 IP 和无 IP DDNS 名称。
- 我通过端口 5001 访问 ssh
- 在我的路由器上,我将端口转发从 5001 设置为 22 并设置为我的服务器的 IP (10.0.0.70)
- 使用tshark转储网络我可以看到传入的SSH数据包到服务器ip(源ip是我的路由器的ip,我的公共ip),但服务器没有响应。
这让我觉得,有一些针对公共 IP 的过滤器设置。 UFW 设置为允许 22 端口。
问题可能出在 sshd_config 吗?
sshd_config 中唯一未注释的行是:
- include /etc/ssh/sshd_config.d/*.conf #sshd_config.d中没有文件
- 质询响应身份验证 否
- 使用PAM 是
- X11转发 是
- 打印型号
- AcceptEnv LANG LC_*
- 子系统 sftp /usr/lib/openssh/sftp-server
有什么建议么? :)
编辑:(试图获取更多信息)
sobik@Sobik-MacBook-Pro ~ % ssh -v -p 5001 [email protected]
OpenSSH_8.6p1, LibreSSL 2.8.3
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 21: include /etc/ssh/ssh_config.d/* matched no files
debug1: /etc/ssh/ssh_config line 54: Applying options for *
debug1: Authenticator provider $SSH_SK_PROVIDER did not resolve; disabling
debug1: Connecting to myip.hopto.org port 5001.'
然后..超时
我sudo iptables -L -v -n | grep :22
得到:
30 1976 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
答案1
需要检查的事项:
- Debian 11 正开始从 过渡
iptables
到nftables
,所以除了iptables -L -vn
,还要检查nft list ruleset
。 - Debian
sshd
使用,因此和libwrap.so
的内容也会对允许哪些连接和不允许哪些连接产生影响。如果您想允许来自任何地方的传入 SSH 连接,请确保其中有一行。/etc/hosts.deny
/etc/hosts.allow
/etc/hosts.allow
sshd: ALL
- 在服务器端,检查
grep sshd /var/log/auth.log
和journalctl _SYSTEMD_UNIT=sshd.service
。