如何在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
注意:
- 将服务器IP替换为服务器的IP地址或DNS名称。
- 根据您的设置更改您的端口号。
- 如果您使用自定义端口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