gpt4 book ai didi

bash - 需要密码时检查SSH连接是否可行

转载 作者:行者123 更新时间:2023-11-29 09:35:09 25 4
gpt4 key购买 nike

我正在尝试编写一个脚本,该脚本将更多地用作健康检查或安全测试。我实际上不需要通过 SSH 运行任何东西。

我们有几台服务器在运行,出于安​​全原因,我们并不总是允许通过 SSH 访问它们,我希望有一个我可以运行的脚本来确认哪些是可访问的,哪些是不可访问的。

我意识到 StackExchange 充满了这样的问题,所以我很快找到了 this suggestion :

$ ssh -q user@downhost exit
$ echo $?
255

$ ssh -q user@uphost exit
$ echo $?
0

基本上,只要无法连接,它就会返回 255,但这是我遇到问题的地方。我们的服务器需要 key 文件用户/密码身份验证。

BatchMode=yes 如果我没有密码约束,我也可以测试它。

我可以给脚本文件的位置,没问题。但我每次都得到 255 因为服务器需要密码,如 this answer 中所示.

所以基本上我的问题是:

是否可以编写一个脚本让我知道是否可以通过 SSH 连接到这些服务器(考虑到我的限制),如果可以的话会是什么样子?

我不需要最终脚本作为答案(尽管那样更好)。只要一些正确方向的指示就会对我有很大帮助。

谢谢!

最佳答案

您可以使用 netcat

如果您只是对端口是否打开感兴趣,您可以使用这个:

if nc -w 5 -z "$server" 22 ; then
echo "Port 22 on $server is open"
fi

如果您还对是否确实有一个 ssh 守护程序运行在该端口上感兴趣,您可以分析服务器的问候消息:

if [[ $(nc -w 5 "$server" 22 <<< "\0" ) =~ "OpenSSH" ]] ; then
echo "open ssh is running"
fi

顺便说一句,使用选项 -w 您可以指定连接超时(以秒为单位)。我为这个例子选择了 5 秒

关于bash - 需要密码时检查SSH连接是否可行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34360943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com