我想找到一种最安全的方法来执行上述操作(在服务器端禁用ssh键登录),这意味着:
我想出了一个解决方案,该解决方案首先以交互方式获取密码(命令read
),然后与sshpass
循环使用,最后使用PROMPT_COMMAND
删除密码。
如果,循环结束,
我对您的安全性观点很感兴趣。
(注意:我们需要在最后一块代码的末尾加上“ &&”,以避免执行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