在shell脚本中隐藏密码

在shell脚本中隐藏密码,shell,Shell,我已经创建了一个shell脚本,如下所示。我需要隐藏密码,当脚本提示输入密码时,我会给出密码。如果我在我的本地机器上运行下面写在单引号内的脚本,它将隐藏密码。但是如果我添加SSH部分,它就不会 我应该如何隐藏密码 最好使用ssh密钥,这样就不需要在ssh代理的帮助下传递密码了。请参阅一个好的操作方法:尝试使用ssh的-t选项强制分配tty ssh -t root@10.3.2.0 'echo -n Password:; read -s password; echo; echo $password


我已经创建了一个shell脚本,如下所示。我需要隐藏密码,当脚本提示输入密码时,我会给出密码。如果我在我的本地机器上运行下面写在单引号内的脚本,它将隐藏密码。但是如果我添加SSH部分,它就不会

我应该如何隐藏密码


最好使用ssh密钥,这样就不需要在
ssh代理的帮助下传递密码了。请参阅一个好的操作方法:

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

ssh -t root@10.3.2.0 'echo -n Password:;
read -s password;
echo;
echo $password;'
编辑:建议解决方案的解释

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

通过这种方式,可以在不同的机器之间传递二进制数据。 可能是这样的:

ssh whoever@wherever 'cat remote_file' | local_program
如果数据是由中间的终端驱动程序过滤的,那么以这种方式在两台机器之间传递数据几乎是不可能的——想想你需要关心的大量转义序列吧

如果没有分配任何终端,就无法隐藏用户输入。任何尝试
sty something
的尝试都将失败,因为根本没有任何终端


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

我对脚本不熟悉,不过我想这可能会帮助您:

ssh -t root@10.3.2.0 'echo -n Password:;
read -s password;
echo;
echo $password;'
#!/bin/sh

echo -n "Enter Password : "
stty -echo
read password < /dev/tty
stty echo
echo
echo -n "Enter Password again : "
stty -echo
read password1 < /dev/tty
stty echo
echo
echo "Password Entered are : $password and $password1"
#/垃圾箱/垃圾箱
echo-n“输入密码:”
stty-echo
读取密码
实际上,我只需要隐藏我给出的信息。不是专门针对密码。如果有输入银行账号的选项,并且我想对其他人隐藏银行账号,我应该如何隐藏它。@sputnick:sry,那就是我了。我“投了反对票”(我刚刚学到了一个很好的术语),因为答案虽然是一个操作ssh密码/密钥的好主意,但它仍然不适合描述的问题:尝试任何类型的密码电子邮件文件加密或其他。重复一遍,同时确保ssh密钥处理问题的完美解决方案,我认为答案可能与给定的问题有关。如果这也不起作用,因为在非交互模式下,目标机器上不会分配任何伪终端,因此
stty
-s
选项无法执行工作。@mikyra:真希望我能理解你说的一点。我对LINUX太陌生了,所以您可以猜测我对脚本有多陌生:-)。我几天前才知道这件事,所以我想这可能行得通。我真的不确定,只是想给OP多一个选项看看。根据给出的反馈,我用某种理由更新了上面的帖子。如果你还好奇的话,看看那里。看起来,我对正在发生的事情有一点了解。但输入仍然是有用的:-)