当前位置: 首页>>技术问答>>正文


如何在22以外的端口上进行SSH

, ,

问题描述

我在同一台路由器后面有两台电脑。我们称他们为A和B.

A可以通过以下方式SSH到B:ssh usr@<internal ip of computer>

B可以通过相同的方式SSH到A,但必须使用外部IP。我已经将我的路由器的端口22转发到了计算机A的IP,所以这一切都对我有意义。

但是,我还希望将端口26转发到计算机B,并使用外部IP从网络外部转发SSH,但是指定端口22或26,以有效地选择要使用的计算机。

我尝试在A和B的输入上允许端口26通过iptables的OUTPUT,但这似乎不起作用。我还将端口26转发到B的内部IP(通过路由器),就像我用22做的那样。

这是我尝试使用外部IP和端口26从A连接到B时得到的信息:

ssh: connect to host xx.xx.xxx.xx port 26: Connection refused.

版本:

  • A = OpenSSH_5.9p1 Debian-5ubuntu1,OpenSSL 1.0.1 2012年3月14日

  • B = OpenSSH_6.0p1 Debian-4,OpenSSL 1.0.1c 2012年5月10日

A有12.04 Ubuntu,B是带有Raspbian的Raspberry Pi。

编辑:我忘记放入的东西:我确实尝试切换SSH配置文件(我发现它是/etc/ssh/ssh_config)我取消注释(删除#)与Port的行并将22更改为26。它还给了我拒绝连接的消息。 (我重新启动无济于事。)

最佳解决办法

看起来你没有在第二台机器上的端口26上运行SSH。您可以将该计算机上的端口号更改为26。

编辑/etc/ssh/sshd_config&不要忘记重新启动SSH或将其保留在22,但将路由器上的端口26转发到第二台机器上的端口22。另外,不要忘记更改第二台计算机上的任何防火墙设置以允许连接。

次佳解决办法

如果您使用的是Linux系统,并且希望连接到端口26上的SSH服务器,则可以使用以下命令。

ssh user@192.168.1.1 -p 26

注意:

  1. 将服务器IP替换为服务器的IP地址或DNS名称。

  2. 根据您的设置更改您的端口号。

  3. 如果您使用自定义端口SSH,那么大多数允许相同端口用于防火墙上的出站,入站连接,否则连接将无法建立

第三种解决办法

我只使用端口22进行内部网ssh访问。

要通过互联网访问我使用自定义(不寻常)端口。这有利于我减少脚本孩子产生的负载,他们正在扫描端口22的“众所周知的用户名”

外部sshd进程由xinetd控制,并与内部sshd进程并行运行。在以下示例中,我使用端口12345.您可以将其更改为系统上任何可用的空闲端口号。也许更高的值会使“快速端口扫描”扫描此端口的可能性更小。

xinetd配置为:

service ssh-external
{
    socket_type = stream
    wait = no
    protocol = tcp
    type = UNLISTED
    user = root
    server = /usr/sbin/sshd
    server_args = -i -f  /etc/ssh/external-sshd.config
    port = 12345
    log_on_failure += USERID

}

文件/etc/ssh/external-ssdh.config可以是您常用的sshd配置的副本。确保配置以下语句:

Port 12345
AddressFamily inet

我还建议强制执行公钥身份验证并禁用Internet访问的密码身份验证:

PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no

第四种办法

侦听端口也可以硬链接到IP地址

的/etc /SSH /sshd_config:

ListenAddress 10.10.10.10:22
ListenAddress 20.20.20.20:4444

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1180.html,未经允许,请勿转载。