ssh通过自动输入密码来循环重新连接(禁用ssh键)

时间:2019-04-17 11:10:13

标签: bash ssh sshpass

我想找到一种最安全的方法来执行上述操作(在服务器端禁用ssh键登录),这意味着:

  1. 我不想将密码放在任何文件中,因此必须保留 在需要时在内存中
  2. 我不希望在执行“ ps”时看到密码
  3. 循环结束后,我要删除密码。

我想出了一个解决方案,该解决方案首先以交互方式获取密码(命令read),然后与sshpass循环使用,最后使用PROMPT_COMMAND删除密码。

如果,循环结束,

  1. 密码错误,或者
  2. 按下ssh返回状态的第一位(密码错误)(在我的机器上是5)

我对您的安全性观点很感兴趣。

(注意:我们需要在最后一块代码的末尾加上“ &&”,以避免执行PROMPT_COMMAND,因为它将清除SSHPASS。)

SSH_WRONG_PW_STATUS=5;
export SSHPASS= ; 
PROMPT_COMMAND='SSHPASS=' ; 

read -p"Enter password: " -s SSHPASS &&
X= &&
while [ x$SSH_WRONG_PW_STATUS != x$X ] ; do
    sshpass -e ssh user@remotehost && read -t 2 -p"Reconnect? (press $SSH_WRONG_PW_STATUS to quit) " -n1 X || X=${?:0:1};
done

0 个答案:

没有答案