gpt4 book ai didi

shell - 密码隐藏在shell脚本中

转载 作者:行者123 更新时间:2023-12-04 16:17:54 24 4
gpt4 key购买 nike


我创建了一个 shell 脚本,如下所示。并且我需要隐藏密码,当脚本提示时,我将得到该密码。如果我在本地计算机上运行单引号内编写的以下脚本,它将隐藏密码。但如果我添加 SSH 部分就不会了。

如何隐藏密码?

ssh <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="097b66667d493839273a273b2739" rel="noreferrer noopener nofollow">[email protected]</a> 'echo -n Password:;
read -s password;
echo;
echo $password;
'

最佳答案

尝试使用 ssh 的 -t 选项来强制 tty 分配。

ssh -t <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="fd8f929289bdcccdd3ced3cfd3cd" rel="noreferrer noopener nofollow">[email protected]</a> 'echo -n Password:;
read -s password;
echo;
echo $password;'

编辑:建议解决方案的解释

如果不运行登录 session 而只是运行命令,默认情况下 SSH 不会为正在运行的进程分配伪终端设备。这种行为并不是一个错误,而是设计故意选择的。

这样就可以在不同机器之间传递未经解释的二进制数据。也许是这样的:

ssh whoever@wherever 'cat remote_file' | local_program

如果数据被中间的终端驱动程序过滤,那么以这种方式在两台机器之间传递数据几乎是不可能的 - 想想您必须关心的大量转义序列!

如果没有分配任何终端,就无法隐藏用户输入。任何 stty 某些内容 的尝试都会失败,因为根本没有任何终端!

要使 ssh 分配伪终端,即使不在登录 session 中运行,您也必须传递 -t 参数来强制 tty 分配。

关于shell - 密码隐藏在shell脚本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15154899/

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