为什么我不能像 http 中那样使用主机指定端口,例如 ssh 127.0.0.1:2222?不知何故,这感觉像正常方式,但至少 OpenSSH 客户端不理解这一点。
答案1
ssh.c
不包含支持该功能的代码;代码读取主机仅查找host
或user@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 port
asnc
。甚至更老的程序rsh
似乎rlogin
不允许指定端口。这个选择由程序的作者决定,并且ssh
host:port
没有使用。
答案2
OpenSSH 不支持host:port
格式。如果要指定 SSH 端口,请使用-p
选项。
ssh -p 2222 [email protected]