On 27/08/2020 14:40, Grant Edwards wrote: > I do _not_ want it to listen on 0.0.0.0. > > I want it to listen on 127.0.0.1 and on whatever IP addresses are > assigned to two specified interfaces.
As far as I'm aware, I don't think OpenSSH allows for listening on a specific interface. You can, however, work around this in a rather unusual way via ip/nftables and DNAT. You will need to enable IP[v6] forwarding via sysctl (or sysctl.conf): net.ipv4.ip_forward=1 net.ipv4.conf.<IFACE>.route_localnet=1 The latter option is critical as, by default, the kernel will not allow you to route to 127.0.0.0/8 as a security precaution. iptables ======== (1) iptables -t nat -A PREROUTING -i <IFACE> -p tcp --dport 22 -j DNAT --to-destination 127.0.0.1:22 [2] ip6tables -t nat -A PREROUTING -i <IFACE> -p tcp --dport 22 -j DNAT --to-destination [::1]:22 nftables (json-like) ==================== table inet nat { chain prerouting { type nat hook prerouting priority dstnat; policy accept; iif "<IFACE>" tcp dport 22 dnat ip to 127.0.0.1:22 iif "<IFACE>" tcp dport 22 dnat ip6 to [::1]:22 } } nftables (cmdline) ================== [1] nft add table inet nat [2] nft add chain inet nat prerouting { type nat hook prerouting priority dsnat\; } (3) nft add rule inet nat prerouting iif <IFACE> tcp dport 22 dnat ip to 127.0.0.1:22 [4] nft add rule inet nat prerouting iif <IFACE> tcp dport 22 dnat ip6 to [::1]:22 As always, 1-2 are not required if you already have a relevant table/chain. Adjust as needed for multiple IFACEs. - V
signature.asc
Description: OpenPGP digital signature