很长时间以来我一直在寻找,我想知道是否可以在shell脚本中传递密码?许多答案都没有。最近,我读了一篇文章,指出如何在Shell脚本中传递密码。我已经尝试过了,但是似乎没有用。这是链接。任何人都可以签出并还原吗?还请说我有办法在shell脚本中传递密码吗?如果没有人说我如何linux如何获取密码输入?
很长时间以来我一直在寻找,我想知道是否可以在shell脚本中传递密码?许多答案都没有。最近,我读了一篇文章,指出如何在Shell脚本中传递密码。我已经尝试过了,但是似乎没有用。这是链接。任何人都可以签出并还原吗?还请说我有办法在shell脚本中传递密码吗?如果没有人说我如何linux如何获取密码输入?
Answers:
通过“输入密码”,您可能意味着输入数据而对用户不可见。
(由geirha建议)使用bash时,可以使用该-s
选项来防止显示键入的字符:
read -p "Password please: " -s pass
或者,更改终端的行为以使用stty -echo
(禁用echo
)隐藏键入的字符。在将密码内置在外壳程序中后,将其读read
入变量(在下面的示例中为$pass
),然后使用再次将其打开stty echo
。由于新行从Enter被隐藏到,因此您必须打印换行以在新行上获得将来的输出。
stty -echo
read -p "Password please: " pass
stty echo
printf '\n'
read
并且printf
是shell内置的。由默认安装stty
的coreutils
软件包提供。这意味着该代码片段非常易于移植。
注意:该-p
选项不是标准选项,而是的bash
。如果需要在其他shell中显示提示,请使用:
printf "Password please: "
stty -echo
read pass
stty echo
printf '\n'
参考文献:
help '\read'
。
zsh
它是可以实现的通过read -s 'pw?Prompt text'
,其中pw
是其中密码将被放置和可变-s
是一个标志,隐藏输入。
您要将密码传递给哪个程序?
链接上的脚本对我有用。请注意,这不是Shell脚本,而是Expect脚本(需要expect
安装软件包`)。使用Expect是自动化基于文本的交互式程序的常用方法。
非交互式ssh
登录通常使用带有空密码短语的基于密钥的身份验证来完成。
其他一些程序(如sudo
)具有从stdin读取密码的选项。
提供密码作为命令行选项通常是一个安全问题,因为在大多数系统上,任何用户都可以使用诸如的简单工具看到其他用户进程,包括那里的命令行参数ps
。
ssh-keygen
用于创建身份验证密钥(在要求输入密码时只需按Enter键),然后使用将其复制到远程用户ssh-copy-id
。如果为sshd启用了密钥身份验证(默认情况下),则ssh将不要求您输入密码。
脚本绝对不能真正处理密码。有哪个应用程序需要密码本身,或者如果不可能,请找到一种更好的方法来对应用程序进行身份验证。请阅读http://mywiki.wooledge.org/BashFAQ/069
有一种方法可以将密码存储在bash脚本中,但是您必须对脚本进行加密,以使没人能真正读取它,或者在该脚本上运行任何类型的调试器以查看其工作情况。要加密bash / shell脚本并使其实际可执行,请尝试在此处复制并粘贴
在上面的页面上,您要做的就是提交脚本(您可以先提交示例脚本以省心)。将为您生成一个zip文件。右键单击下载链接,然后复制您提供的URL。然后,转到UNIX框并执行以下步骤。
安装:
wget link-to-the-zip-file
unzip the-newly-downloaded-zip-file
cd /tmp/KingLazySHIELD
./install.sh /var/tmp/KINGLAZY/SHIELDX-(your-script-name) /home/(your-username) -force
上面的安装命令将为您执行以下操作:
它将加密的脚本安装在目录中/var/tmp/KINGLAZY/SHIELDX-(your-script-name)
。
它将在您指定的替换目录中放置指向此加密脚本的链接,以这种/home/(your-username)
方式,它使您无需键入绝对路径即可轻松访问该脚本。
确保没有人可以修改脚本-任何尝试修改加密脚本的操作都将使其无法操作...直到这些尝试被停止或删除。
确保绝对没有人可以复制它。没有人可以将您的脚本复制到一个僻静的位置,然后尝试修改它,以查看其工作原理。脚本的所有副本都必须是指向您在安装过程中指定的原始位置的链接。
注意:
我认为这不适用于提示用户作出响应的交互式脚本。这些值应硬编码到脚本中。加密确保没有人能真正看到这些值,因此您不必担心。