首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查SSH服务器是否在没有实际尝试登录的情况下侦听主机

如何检查SSH服务器是否在没有实际尝试登录的情况下侦听主机
EN

Stack Overflow用户
提问于 2015-04-17 20:17:40
回答 3查看 1.9K关注 0票数 0

我正在尝试创建一个bash脚本,该脚本检查主机是否存在,然后在ssh服务器正在监听主机时尝试将SSH插入其中。如果SSH服务器没有侦听,则该命令默认为telnet。

做这件事最好的方法是什么?我正在考虑使用一些类似ssh的密匙扫描来从ssh服务器获取公钥,但ssh- key扫描不在这个jumpserver上。Nmap也不在此服务器上。我无法将这些二进制文件复制到跳转服务器上,也无法在jumpserver上编译/构建任何东西。

检查SSH服务器的最佳方法是什么?我认为预期可能有效,但如果可能的话,我想避免使用它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-17 20:25:50

您可以编写shell脚本并使用telnet命令查找远程端口状态。

代码语言:javascript
复制
[root@box ~]# telnet remote.example.com 22
Trying 192.168.100.1...
Connected to remote.example.com.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.3

示例脚本:

代码语言:javascript
复制
TELNET=`echo "quit" | telnet $SERVER $PORT | grep "Escape character is"`
if [ "$?" -ne 0 ]; then
  echo "Connection to $SERVER on port $PORT failed"
  exit 1
else
  echo "Connection to $SERVER on port $PORT succeeded"
  exit 0
fi
票数 2
EN

Stack Overflow用户

发布于 2015-04-17 20:26:33

如果bash具有必要的(/dev/tcp)扩展,只需检查连接到它的能力即可;这不需要任何外部命令:

代码语言:javascript
复制
if (exec 2>/dev/null 4>/dev/tcp/"$hostname"/22); then
  echo "port is open"
else
  echo "unable to connect"
fi

请注意,您的脚本需要从#!/bin/bash (而不是#!/bin/sh )开始,这样才能起作用。

票数 3
EN

Stack Overflow用户

发布于 2019-04-13 14:09:45

我喜欢单身汉:)

代码语言:javascript
复制
if nc "server" "port" </dev/null >/dev/null 2>&1;then echo yeah;else echo no;fi

在我的路由器和rpi上工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29708606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档