如何在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,以有效地选择要使用的计算机。

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

这是当我尝试使用外部IP和端口26从A SSH到B时得到的:

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

版本:

  • A=OpenSSH_5.9p1Debian-5ubuntu1,OpenSSL1.0.1 14Mar2012
  • B=OpenSSH_6.0p1Debian-4,OpenSSL1.0.1c2012年5月10日

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

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

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

ssh user@192.168.1.1 -p 26

注意事项:

  1. 将服务器IP替换为服务器的IP地址或DNS名称。
  2. 按照您设置的方式更改端口号。
  3. 如果您使用自定义端口SSH,则允许相同的端口用于出站,防火墙上的入站连接,否则连接将无法建立

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

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

我仅将端口22用于intranet ssh访问。

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

外部 sshd过程由 xinetd 并与 内部 sshd process.In 以下示例我使用端口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 12345AddressFamily inet

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

PasswordAuthentication noPermitEmptyPasswords noChallengeResponseAuthentication no

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

/etc/ssh/sshd_config:

ListenAddress 10.10.10.10:22ListenAddress 20.20.20.20:4444

正如我在一个 相关答案,ssh客户端允许指定URI格式为 ssh://user@host:1234. 例如:

ssh  ssh://myuser@mydomain.com:2222

其中2222是端口号。 替换您打算使用的端口号。 当然,请记住,为了连接到指定的端口ssh服务器(在您尝试连接的主机上)必须首先侦听指定的端口

在默认端口(TCP/22)上运行ssh不是一个好主意,无论是从WAN IP22转发到LAN IP上使用ssh-server的任何端口。

要使ssh-server侦听任何给定的端口,您必须

  1. 编辑 /etc/ssh/sshd_config (注意 d)从 #Port 22Port 26. 即,取消注释并更改端口。 优于26 会是什么 随机上方 (65535以下),像42895。
    还可以考虑更改为 PermitRootLogin no.

  2. 使用以下方法测试您的配置 ssh测试模式

    sudo sshd -t
  3. 重新启动ssh-server服务

     sudo systemctl restart sshd.service

然后从ssh-client您将能够连接

ssh user@serverNameOrIP -p 42895

奖金: mosh

如果mosh包安装在服务器上,则使用

mosh --ssh="ssh -p 42895" serverNameOrIP

请注意,/etc/ssh/ssh_config_是ssh客户端配置。 其中as/etc/ssh/sshd_config_是ssh守护程序配置。

Yuu ohave SSH在第二台机器上的端口22或26上运行吗?