我已经创建了一个shell脚本,如下所示.我需要隐藏密码,我将在脚本提示时给出密码.如果我在本地机器的单引号内运行下面的脚本,它将隐藏密码.但是,如果我添加SSH部分,它不会.
隐藏密码该怎么办?
Run Code Online (Sandbox Code Playgroud)ssh root@10.3.2.0 'echo -n Password:; read -s password; echo; echo $password; '
尝试使用-tssh选项强制tty分配.
ssh -t root@10.3.2.0 'echo -n Password:;
read -s password;
echo;
echo $password;'
编辑:解释建议的解决方案
如果没有运行登录会话而只是一个命令,则默认情况下,SSH不会为正在运行的进程分配伪终端设备.这种行为不是一个错误,而是由设计选择.
这样就可以在不同的机器之间传递未解释的二进制数据.也许是这样的:
ssh whoever@wherever 'cat remote_file' | local_program
如果数据被中间的终端驱动程序过滤,那么以这种方式在两台机器之间传递数据几乎是不可能的 - 想想您需要关注的大量转义序列!
没有分配任何终端,就无法隐藏用户输入.任何尝试stty something都会失败,因为根本没有任何终端!
要使ssh分配一个伪终端,即使没有在登录会话中运行,你必须传递-t参数来强制tty分配.
| 归档时间: | 
 | 
| 查看次数: | 5407 次 | 
| 最近记录: |