为什么我无法 ssh 到 hostname:port

为什么我无法 ssh 到 hostname:port

为什么我不能像 http 中那样使用主机指定端口,例如 ssh 127.0.0.1:2222?不知何故,这感觉像正常方式,但至少 OpenSSH 客户端不理解这一点。

答案1

ssh.c不包含支持该功能的代码;代码读取主机仅查找hostuser@host形成:

    if (ac > 0 && !host) {
            if (strrchr(*av, '@')) {
                    p = xstrdup(*av);
                    cp = strrchr(p, '@');
                    if (cp == NULL || cp == p)
                            usage();
                    options.user = p;
                    *cp = '\0';
                    host = xstrdup(++cp);
            } else
                    host = xstrdup(*av);
            if (ac > 1 && !opt_terminated) {
                    optind = optreset = 1;
                    goto again;
            }
            ac--, av++;
    }

有些程序所采用的形式host:port并不是唯一的方式;telnet例如使用host portasnc。甚至更老的程序rsh似乎rlogin不允许指定端口。这个选择由程序的作者决定,并且ssh host:port没有使用。

答案2

OpenSSH 不支持host:port格式。如果要指定 SSH 端口,请使用-p选项。

ssh -p 2222 [email protected]

相关内容