默认情况下情况就是这样。我没有设置任何东西。我的debian
服务器已打开网络连接,eno2
ip 为192.168.1.40
。Internet、sshd,一切正常。
现在我添加了第二个到 的连接eno4
。它是到另一台计算机的直接链路(没有路由器或交换机),用于管理目的。我们将其称为一个客户端。在客户端上,它自动显示为10.0.0.2
。我可以从客户端 ping 。
在服务器上,没有分配 IP 地址。但我可以从客户端顺利进行 netcat,因为我只需要客户端 IP 地址。
例如:
客户:
$ echo "Some big ZFS pool here" | nc -l -p 5555
服务器:
$ nc -w 10 10.0.0.2 5555 | cat
Some big ZFS pool here
现在我想使用此连接连接到服务器上的 sshd。
但是,连接被拒绝。我可以通过默认eno2
192.168.1.40
连接通过 LAN 和互联网顺利连接。只是不能通过这个直接链接。
默认情况下,sshd
监听所有接口上的所有传入连接。也许eno4
只需要一个 IPv4 地址。所以我这样做了:
$ sudo ip addr add 10.0.0.1/8 dev eno4
$ ip addr show eno4
5: eno4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 0a:a5:6a:1b:a2:22 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.1/8 scope global eno4
valid_lft forever preferred_lft forever
我可以10.0.0.1
从服务器 ping 通。我可以 netcat。但是,我不能 ssh。
有很多很长的阅读,很多处理网络上各种路由表和内容的工作。但我真的对路由一无所知,它是否必要,替代方案是什么,我可能会花一整天的时间尝试它。但它真的那么复杂吗?我可以 ping。我可以 netcat。ssh
开始操作界面的绝对最简单的方法是什么?甚至可能是暂时的,这样我就可以完成工作现在?
并且,可选的是,什么是更好的永久解决方案?
请注意,它sshd
已经在监听所有内容,我不希望它停止监听。我不想更改 sshd 配置,甚至不想重新启动 sshd,因为服务器正在使用中。
该服务器上最初唯一改变的是端口:
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
Port 22222
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
... snip ...
答案1
显然,添加 IP 地址后,它确实有效。我犯了一个错误,ssh_config
我以为后面的条目会覆盖前面的条目,但事实恰恰相反!
简化示例;这个才不是工作:
Host SomeServer
Hostname 192.168.1.40
User admin
Port 22222
Host SomeServer
# Some temporary overwrite parameters
Hostname 10.0.0.1
然而,这做工作:
Host SomeServer
# Some temporary overwrite parameters
Hostname 10.0.0.1
Host SomeServer
Hostname 192.168.1.40
User admin
Port 22222
我觉得自己有点傻,不知道该如何处理这个案例:
- 投票删除我的问题
- 更新我的问题并解释它确实按预期工作
- 通过以下澄清来回答我自己的问题
我选择了后者,这样我就可以结案了,并且为问了一个无法解决的问题而道歉(因为实际上它已经起作用了)。