如何连接ssh与指定端口?


56

我知道在ssh时如何“连接”到某个端口。

ssh user@remotehostip -p XXX

但是有没有办法在某个端口上建立一个“ ssh”?

我的意思是,有没有一种方法可以指定本地计算机将要使用的端口?


您是要更改服务器端口还是客户端接收端口?编辑:好的,我删除了我的建议。被收藏。
polym

我想指定客户端的端口
kwagjj 2014年

3
@kwagjj是指源端口?如果不是,则无法控制源端口。
帕特里克

Answers:


15

这不容易实现。如何做到这一点取决于应在哪里看到源端口:在本地也是如此,或者如果从外部网络的角度来看它是正确的端口,是否足够?

您可以在LXC容器中运行SSH客户端。我从未这样做过,因此无法向您详细解释。但是您创建一个虚拟网络接口并将其附加到此容器,以便ssh使用此接口,因为它是它看到的唯一(外部)接口。

在主机系统上,应该有可能检测到数据包来自此接口。因此,您可以使用Netfilter的NAT(SNAT)来重写源地址,例如:

iptables -t nat -A POSTROUTING -o vnet0 -p tcp --dport 22 -j SNAT --to-source :1234

当然,如果您连接到不同于22的端口,这将不起作用(或者变得更加复杂)。


1
谢谢...但是我认为此信息超出了我的建议...但仍然感谢:)但是,如果我真的在做某事时陷入僵局..也许我会转向再次回答:)
kwagjj 2014年

是的,很难找到有关该问题的信息。我发现了sshfs,有人说它适用于此命令,但我不相信。如果您找到答案,请告诉我们:)!
polym

@kwagjj将完整的(文本模式)Linux安装为真实VM可能更容易(理解)。如果仅将此虚拟机(或其中的某个帐户)用于SSH,则可以使用虚拟机Netfilter进行此操作。
Hauke Laging


2

如果要通过路由器进行端口转发,则一个简单的解决方案是将入站端口设置为所需端口,将本地端口设置为22。您的计算机仍将像往常一样在22上建立ssh连接,但实际上是从网络外部进行连接您将使用入站端口。如果您只是想阻止机器人在22上锤击您的机器,则应该这样做。

这可能对您的特定问题没有帮助,但是我可以想象很多人因此而来到这里。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.