如何在不同的端口上启动 ssh 服务器?

如何在不同的端口上启动 ssh 服务器?

我想在端口 21 上启动 ssh 服务器(针对我的一个本地主机)。

OS X 优胜美地 (10.10.4)

我改变了/etc/httpd_config通过增加:

Port 21

然后重新启动服务器:

sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load /System/Library/LaunchDaemons/ssh.plist

但是 nmap 仍然显示标准端口 22 上的 ssh:

$ sudo nmap -sS -sV -p 21,22 localhost
Password:

Starting Nmap 6.47 ( http://nmap.org ) at 2015-08-10 18:00 PDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00020s latency).
PORT   STATE  SERVICE VERSION
21/tcp closed ftp
22/tcp open   ssh     OpenSSH 6.2 (protocol 2.0)

Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.20 seconds

为什么?我做错了什么?请帮忙。

答案1

在 Mac OS X 系统上,与 Unix 和 Linux 系统一样,有一个/etc/sshd_config文件。在该文件中,您将找到以下行:

#Port 22

但是,与 Linux/Unix 系统不同,删除#,使该行变成注释,并将端口更改为您想要使用的端口,然后重新启动 SSH 守护程序,不会导致系统监听您选择的端口;它将继续监听标准端口 22。

但是,您可以通过编辑文件来让系统侦听非标准端口,ssh.plist如对 Server Fault 帖子的回复中所述如何在 Mac OS X 上更改 sshd 端口?例如:

sudo vi /System/Library/LaunchDaemons/ssh.plist

在该文件中查找以下部分:

<dict>
        <key>Listeners</key>
        <dict>
                <key>SockServiceName</key>
                <string>ssh</string>

将 替换ssh<string>ssh</string>您要使用的端口,例如<string>2222</string>。然后使用以下两个命令重新启动 SSH 守护程序:

sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load /System/Library/LaunchDaemons/ssh.plist

然后,如果您发出 netstat 命令,例如以下内容,您应该会看到系统正在监听非标准端口。

$ netstat -an | grep 2222
tcp6       0      0  *.2222                 *.*                    LISTEN
tcp4       0      0  *.2222                 *.*                    LISTEN

注意:最好不要使用知名港口编号,这可能会导致以后的混淆。也就是说,最好使用大于 1024 的端口,而不是重新分配用于标准服务的端口,例如FTP. FTP,不是远程登录,使用端口 21。FTP 将其用作命令端口。Telnet 使用端口 23。

答案2

@barlop 非常接近。有两个地方需要进行此修改。一个是针对 ssh 客户端,另一个是针对 ssh 守护程序(即服务器)。

ssh 客户端在/etc/ssh/ssh_config, ssh 守护进程在/etc/ssh/sshd_config

然后使用 重新启动 ssh sudo service ssh restart

我的 nmap 现在报告:

Nmap scan report for localhost (127.0.0.1)
Host is up (0.000032s latency).
PORT   STATE  SERVICE VERSION
21/tcp open   ssh     (protocol 2.0)
22/tcp closed ssh

我现在可以通过端口 21 ssh 到我自己的机器:

$ telnet 10.64.10.200 21
Trying 10.64.10.200...
Connected to 10.64.10.200.
Escape character is '^]'.
SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2

21号端口已关闭:

$ telnet 10.64.10.200 22
Trying 10.64.10.200...
telnet: Unable to connect to remote host: Connection refused

相关内容