如何确定要使用SSH登录的端口?


15

我有一个远程安装的Ubuntu 10.04服务器,前一段时间已经安装了。当我记录用户名和密码时,我似乎很聪明,并将通常的ssh端口从22更改为...。

我如何找出那个端口可能是什么?

我确实可以通过托管公司的后门访问服务器,因此我可以执行所需的所有Unix命令-但我无法使用计算机上的普通腻子外壳登录。


这可能很愚蠢,并且您已经有了很好的答案,但是如果您过去有连接,则可以查看终端的历史记录和/或~/.ssh/config
Sparhawk

Answers:


24

首先检查配置文件中配置了哪个端口:

$ sudo grep Port /etc/ssh/sshd_config
Port 22

然后重新启动ssh以确保它加载了刚刚看到的配置,或者找出正在哪个端口ssh上运行:

$ sudo netstat -tpln | egrep '(Proto|ssh)'
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      12586/sshd

ssh在端口22上正常运行。


1
请注意:我认为您不需要sudo
Piertoni

在第一个命令中,您需要执行此操作,sudo因为通常sshd配置文件不可读。第二步,您需要sudo能够解析Program name,否则您只能看到在您自己的用户下运行的进程的名称。
马科斯·迪奥尼

我同意@piertoni,您不需要使用“ SUDO”运行此命令。
Amintabar

8

如果您可以通过其他方式访问服务器,请运行:

$ sudo grep Port /etc/ssh/sshd_config 
Port NNN

这将返回如上所示的一行,这NNN将是您选择的端口。


3

比较简单的方法是查看SSH服务器配置文件:

➜  ~  sudo grep Port /etc/ssh/sshd_config 
   Port 22

还使用以下命令检查每个进程的侦听端口lsof

sudo lsof -Pi | grep ssh

或其他任何列出端口的命令,例如netstat -lntu


3

如果您无权访问服务器的控制台,则必须探测远程主机上的所有端口。这些实用程序就像nmap,但是网络层必须将流量中继到主机(IP地址)和端口的特定组合。


3

如果您无权访问服务器,则可以使用nmap“版本扫描”功能找到SSH端口:

nmap -sV -p- <insert target's IP here>

-sV选项表示“版本扫描”,-p-表示“扫描所有端口”。如果您的连接良好,并且确定不会破坏某人的防火墙或IDS,则可以添加-T5“尽快扫描”。结果将如下所示:

PORT     STATE SERVICE VERSION
1422/tcp open  ssh      (protocol 2.0)

1
$ sudo netstat -lntp
[sudo] password for XXX:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address    Foreign Address  State        PID/Program name
tcp   0      0      0.0.0.0:22       0.0.0.0:*        LISTEN       2799/sshd
tcp6  0      0      :::22            :::*             LISTEN       2799/sshd
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.