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

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

A可以通过以下方式SSH到B: ssh usr@

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

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

我已经尝试在A和A的输入上允许端口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 

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

 PasswordAuthentication no PermitEmptyPasswords no ChallengeResponseAuthentication no 

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

的/ etc / SSH / sshd_config中:

 ListenAddress 10.10.10.10:22 ListenAddress 20.20.20.20:4444