如何使SSH从stdin读取密码,默认情况下不会这样做?
基于这篇文章你可以做到:
创建一个使用SSH_ASKPASS打开ssh会话的命令(在man ssh上搜索SSH_ASKPASS )
$ cat > ssh_session <注意:为了避免ssh尝试询问tty,我们使用setsid
创建一个返回密码的脚本(注意echo"echo")
$ echo "echo your_ssh_password" > /path/to/script_returning_pass让它们可执行
$ chmod +x ssh_session $ chmod +x /path/to/script_returning_pass试试吧
$ ./ssh_session请记住,ssh代表安全shell,如果您将用户,主机和密码存储在纯文本文件中,则会误导工具,从而产生可能的安全漏洞
另一个要求是必须设置DISPLAY.如果你正在运行X,你将不会注意到.如果你不是,你会的.要使ssh_script更具可移植性,请添加:export DISPLAY; DISPLAY =假
2> steffen..:您可以使用sshpass,例如在官方debian存储库中.例:
$ apt-get install sshpass $ sshpass -p 'password' ssh username@server
3> pvoosten..:大多数SSH客户端都无法使用.您可以使用SSH API来解决这个问题,例如Paramiko for Python.注意不要否决所有安全策略.
它不应该起作用,因为这会激发初级sysadmins使用在脚本逻辑中纠缠在一起的SSH密码来编写脚本。在用于网络和系统管理的环境中,一方面需要对安全敏感的信息与另一方面使事情做好之间进行明确区分。密码认证还不够安全。由于ssh在sysadmin上下文中广泛使用,因此尝试使用户远离仅使用密码的安全性是一个好主意。