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

bha*_*ral 22 ssh tcp

我有一个远程设置的 Ubuntu 10.04 服务器,我在不久前设置了它。虽然我记录了用户名和密码,但我似乎很聪明,将通常的 ssh 端口从 22 更改为......别的。

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

我确实可以通过托管公司的后门访问服务器,所以我可以执行任何需要的 Unix 命令——但我无法在我的机器上使用普通的腻子外壳登录。

Mar*_*one 33

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

$ sudo grep Port /etc/ssh/sshd_config
Port 22
Run Code Online (Sandbox Code Playgroud)

然后重新启动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
Run Code Online (Sandbox Code Playgroud)

那是ssh在端口 22 上正常运行。


ter*_*don 9

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

$ sudo grep Port /etc/ssh/sshd_config 
Port NNN
Run Code Online (Sandbox Code Playgroud)

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


Bra*_*iam 6

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

?  ~  sudo grep Port /etc/ssh/sshd_config 
   Port 22
Run Code Online (Sandbox Code Playgroud)

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

sudo lsof -Pi | grep ssh
Run Code Online (Sandbox Code Playgroud)

或任何其他端口列表命令,如netstat -lntu.


Mar*_*ark 5

如果您没有服务器的登录访问权限,您可以使用nmap“版本扫描”功能找到 SSH 端口:

nmap -sV -p- <insert target's IP here>
Run Code Online (Sandbox Code Playgroud)

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

PORT     STATE SERVICE VERSION
1422/tcp open  ssh      (protocol 2.0)
Run Code Online (Sandbox Code Playgroud)