我想打开 ssh 终端,但它在端口 22 上拒绝连接。我的 nmap 没有列出端口 22?我如何连接到我的服务器?
PORT STATE SERVICE
21/tcp open ftp
25/tcp open smtp
80/tcp open http
4000/tcp filtered remoteanything
4001/tcp filtered newoak
4002/tcp filtered mlchat-proxy
这是我从 hackertarget.com 进行的端口扫描:
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD 1.3.1
22/tcp closed ssh
25/tcp open smtp Postfix smtpd
80/tcp open http lighttpd 1.4.29
110/tcp closed pop3
139/tcp closed netbios-ssn
143/tcp closed imap
443/tcp closed https
445/tcp closed microsoft-ds
1433/tcp closed ms-sql-s
3306/tcp closed mysql
8080/tcp closed http-proxy
怎么才能关闭sshd呢?
答案1
如果你的连接被拒绝,并且Nmap显示端口被关闭,那么你就无法连接。如果您有其他方式(物理终端、虚拟控制台等)进行访问,您可以使用以下命令确认 SSH 守护进程是否正在运行(有些命令可能在您的系统上不可用):
ps -f -C sshd
ps aux | grep sshd
sudo netstat -ptan | grep sshd
service ssh status
如果它没有运行,您需要启动它。执行此操作的常见方法是:
service ssh start
invoke-rc.d ssh start
/etc/init.d/ssh start
/usr/sbin/sshd
所有这些命令都需要 root 权限(例如 sudo)。
如果守护进程正在运行,但您仍然无法连接,则可能是网络设备或主机的 iptables 防火墙阻止了连接。您可以使用 来查看自己的规则iptables -L
,但如果您使用防火墙管理器(UFW 在 Ubuntu 上很流行),则这些表可能很难阅读,您应该检查您正在使用的工具的用户界面(ufw status
例如 ) 。网络设备不太可能阻止它,因为您的 Nmap 输出显示了一些已过滤(防火墙)的端口,而 22/tcp 不在其中。
最后,还有一些防御工具和脚本(例如失败2禁止和其他),可以阻止违反策略的地址(例如太多失败的登录尝试),因此您可能需要检查日志中是否有类似的情况。
答案2
您可以使用以下命令远程检查 ssh 服务器的状态nmap
$ nmap -v -nn serverip 22
如果它显示 ssh 服务器已关闭,那么您必须获得对 ssh 服务器的本地访问权限并执行如下命令:
$ /etc/init.d/ssh status
如果此显示 ssh 服务已关闭,那么您必须通过以下方式启动它
$ sudo /etc/init.d/ssh start
或者
$ service ssh start