当前位置:  开发笔记 > 编程语言 > 正文

在需要密码时检查是否可以进行SSH连接

如何解决《在需要密码时检查是否可以进行SSH连接》经验,为你挑选了1个好方法。

我正在尝试编写一个脚本,将更多服务器作为运行状况检查或安全性测试.我不需要通过SSH实际运行任何东西.

我们有一些运行的服务器,出于安全考虑,我们并不总是允许SSH,我希望有一个我可以运行的脚本来确认哪些是可访问的,哪些不是.

我意识到StackExchange充满了这些问题,所以我很快就找到了这个建议:

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

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

基本上,255只要连接不可能,它就会返回,但这里是我遇到问题的地方.我们的服务器需要密钥文件用户/密码验证.

BatchMode=yes我有机会测试了罚款,如果我没有密码限制为好.

我可以给脚本文件的位置,没有问题.但我255每次都会得到,因为服务器需要密码,这可以在这个答案中看到.

基本上我的问题是:

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

我不需要最终的脚本作为答案(虽然这是更可取的).只是在正确的方向上的一些指示将帮助我很多.

谢谢!



1> hek2mgl..:

你可以用netcat.

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

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

如果您对该端口上实际运行的ssh守护程序感兴趣,您可以分析服务器的hello消息:

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

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

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有