【问题标题】:Ssh client through a specific interface通过特定接口的 ssh 客户端
【发布时间】:2012-09-04 08:42:52
【问题描述】:

如何强制客户端连接 ssh 通过特定接口进行通信?

我有一个带有 eth0 和 eth1 的服务器,即,我想强制所有 ssh 客户端通过 eth0。因此,当我的服务器上有很多 ssh 客户端时,我可以更快地通过 eth1 访问我的服务器。

编辑:发起 ssh 客户端连接的是服务器。

【问题讨论】:

  • 您陈述的理由可能是错误的。除非 SSH 客户端是 dong 文件传输或隧道,否则流量非常零星。
  • 如果您的问题已解决,请发布您的答案或接受此处给出的列表中的答案。如果您不想进一步调试,最好关闭问题或删除问题,因为它不能解决发布问题以寻求答案的目的,然后将其留在中间
  • 哎呀刚刚注意到我浪费了一大堆时间试图回答一个 2 岁的问题 - 仍然弄错了
  • os 级别的解决方案是使用 Sujal 用户建议的 iptables 将所有 ssh 流量路由到您的 eth0。

标签: networking ssh


【解决方案1】:

更新 OPs 编辑要求服务器端解决方案 - 这是客户端。 对于临时使用,您可以从特定 IP 或以太网端口将选项绑定到 SSH。 ssh target_IP -b source_IP

要获得更持久的解决方案,请更改路由表。

我尝试从 172.x.x.7 (eth0) SSH 到 172.x.x.69,它有另一个以太网端口 172.x.x.8 (eth1),恰好是默认网关。

如果我尝试直接 ssh 会失败 - 因为此源 IP 默认为 x.x.x.8 eth1,而外部防火墙规则不允许 .69

# ssh 172.29.179.69 -l root
ssh: connect to host 172.x.x.69 port 22: Connection timed out
#

当我使用 -b 开关将 SSH 绑定到 x.x.x.7 IP (eth0) 时成功 - 在防火墙规则中允许此 IP 连接到 .69。

# ssh 172.x.x.69 -b 172.x.x.7 -l root
Last login: Wed Nov 19 14:27:44 2014 from 172.x.x.7
#

在 172.x.x.7 我有两个以太网端口 x.7 和 x.8

# ifconfig 
eth0      Link encap:Ethernet  HWaddr xxxxx
          inet addr:172.x.x.7  Bcast:172.x.x.31  Mask:255.255.255.224
          inet6 addr: xxx Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:27678 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1852058 (1.7 MiB)  TX bytes:684 (684.0 b)

eth1      Link encap:Ethernet  HWaddr xxx
          inet addr:172.x.x.8  Bcast:172.x.x.31  Mask:255.255.255.224
          inet6 addr: xxx Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:72022 errors:0 dropped:0 overruns:0 frame:0
          TX packets:34734 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:40788643 (38.8 MiB)  TX bytes:4441314 (4.2 MiB)

我需要这个 hack 的原因是路由表默认 eth1 而不是 eth0

# route (@172.x.x.7)
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.x.x.0       *               255.255.255.224 U     0      0        0 eth1
172.x.x.0       *               255.255.255.224 U     0      0        0 eth0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth2
link-local      *               255.255.0.0     U     1002   0        0 eth0
link-local      *               255.255.0.0     U     1003   0        0 eth1
link-local      *               255.255.0.0     U     1004   0        0 eth2
default         172.x.x.1       0.0.0.0         UG    0      0        0 eth1 # eth0 OK
#

【讨论】:

  • 我看到这并没有回答问题,因为 OP 谈到了服务器 eth0,前面只是简单地评论了“不要泄露秘密 O&M IP”我的回答解决了我今天遇到的问题。跨度>
【解决方案2】:

您需要在“iptables”中添加一些规则,以便将您从盒子发起的 ssh 流量转发到远程机器。

iptables -A FORWARD -i eth1 -o eth2 -p tcp --dport 22 -d [destination ip] -j ACCEPT

【讨论】:

  • wtf,这会将通过路由器的连接从 eth1 转发到 eth2。它对与路由器的连接没有任何作用。
【解决方案3】:

只告诉其他用户 eth0 的 ip 地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 2022-01-02
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多