我想在端口 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