如何在 22 以外的端口上使用 SSH

Gar*_*ary 259 ssh port-forwarding

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

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

B 可以通过 SSH 连接到 A,但必须使用外部 IP。我已将路由器的端口 22 转发到计算机 A 的 IP,因此这一切对我来说都有意义。

但是,我还想通过使用外部 IP 将端口 26 转发到计算机 B 和来自网络外部的 SSH,但指定端口 22 或 26,以有效地选择要使用的计算机。

我曾尝试通过iptablesA 的OUTPUT和 B 的 INPUT允许端口 26 ,但这似乎不起作用。我也将端口 26 转发到 B 的内部 IP(通过路由器),就像我对 A 的 22 所做的那样。

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

ssh: connect to host xx.xx.xxx.xx port 26: Connection refused.
Run Code Online (Sandbox Code Playgroud)

版本:

  • 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并更改2226. 它仍然给了我连接被拒绝的消息。(我重新启动无济于事。)

Shi*_*ngh 562

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

ssh user@192.168.1.1 -p 26
Run Code Online (Sandbox Code Playgroud)

笔记:

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

  • 不,这不是正确答案。OP 在守护进程未侦听所需端口时遇到问题。他清楚地寻求有关 SSH 服务器和/或 NAT 配置的帮助,但当前的答案忽略了原始帖子并描述了 OP 已知的客户端命令选项。我想知道这个答案是如何获得这么多赞成票的。 (12认同)
  • 这对大多数人来说是正确的,但这对 OP 的问题是不正确的。 (6认同)

Ner*_*est 73

您似乎没有在第二台机器上的端口 26 上运行 SSH。您可以将该机器上的端口号更改为 26。

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

  • 正确的。sshd 是服务(d 是守护进程)。编辑配置文件(使用 sudo gedit),然后使用“sudo service ssh restart”重新启动服务。 (3认同)
  • 啊...所以 sshd_config 必须改变,而不是 ssh_config ? (2认同)
  • 解决了问题。也不必更改任何防火墙设置。 (2认同)

H.-*_*itt 10

我只使用 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
}
Run Code Online (Sandbox Code Playgroud)

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

Port 12345
AddressFamily inet
Run Code Online (Sandbox Code Playgroud)

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

PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
Run Code Online (Sandbox Code Playgroud)


小智 9

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

/etc/ssh/sshd_config:

ListenAddress 10.10.10.10:22
ListenAddress 20.20.20.20:4444
Run Code Online (Sandbox Code Playgroud)


Ser*_*nyy 8

正如我在相关答案中所解释的,ssh 客户端允许将 URI 格式指定为ssh://user@host:1234. 例如:

ssh  ssh://myuser@mydomain.com:2222
Run Code Online (Sandbox Code Playgroud)

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