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



我正在尝试制作一个bash脚本,该脚本检查主机是否存在,然后在SSH服务器正在侦听主机上时尝试ssh进入该主机。如果 SSH 服务器未侦听,则该命令将默认为 telnet。

最好的

方法是什么?我正在考虑使用类似ssh-keysscan的东西从ssh服务器中获取公钥,但是ssh-keysscan不在这个跳转服务器上。Nmap 也不在此服务器上。我无法将这些二进制文件复制到跳转服务器上,也无法在跳转服务器上编译/构建任何内容。

检查SSH服务器的最佳方法是什么?我认为期望可能会起作用,尽管如果可能的话,我想避免使用它。

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

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 开头才能正常工作。

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

[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

示例脚本:

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

我喜欢单行:)

if nc "server" "port" </dev/null >/dev/null 2>&1;then echo yeah;else echo no;fi

适用于我的路由器和我的 RPI

相关内容

  • 没有找到相关文章

最新更新