你怎么能SSH阅读从标准输入密码时,它不会在默认情况下怎么办?
Answer 1:
你不能与大多数SSH客户端。 您可以通过使用SSH API的,像解决它的paramiko为Python。 要小心,不要否决所有安全策略。
Answer 2:
在此基础上后 ,你可以这样做:
创建该打开使用SSH_ASKPASS SSH会话的命令(寻求SSH_ASKPASS 男人SSH )
$ cat > ssh_session <<EOF
export SSH_ASKPASS="/path/to/script_returning_pass"
setsid ssh "your_user"@"your_host"
EOF
注:为避免ssh来试着问了TTY我们使用setsid
创建一个脚本,它返回你的密码(注意回声“回声 )
$ echo "echo your_ssh_password" > /path/to/script_returning_pass
让他们可执行
$ chmod +x ssh_session
$ chmod +x /path/to/script_returning_pass
试试吧
$ ./ssh_session
请记住,SSH代表安全壳,如果你保存你的用户,主机和密码以纯文本文件,你是误导的创建可能的安全漏洞的工具
Answer 3:
您可以使用sshpass这是例如在官方Debian仓库 。 例:
$ apt-get install sshpass
$ sshpass -p 'password' ssh username@server
Answer 4:
旧文章复兴...
我发现这是在寻找一个解决方案,以完全相同的问题,我找到了,我希望有人有一天会发现它非常有用:
- 安装SSH-askpass程序(apt-get的,百胜...)
- 设置
SSH_ASKPASS
变量(export SSH_ASKPASS=/usr/bin/ssh-askpass
) - 从一个终端打开而不未定义TERMINAL变量新ssh连接(
setsid ssh user@host
)
这看起来很简单是安全的,但没有检查,但(只使用本地安全上下文)。
我们到了。
Answer 5:
FreeBSD的邮件列表建议期望库。
如果你需要一个纲领性的ssh登录,你真的应该被使用公共密钥登录 ,但-显然有比使用外部库通过传递一个密码是少了很多安全漏洞,这样stdin
。
Answer 6:
我不知道你需要这个功能的原因,但似乎你可以使用ssh-凯基此行为。
它允许您登录到服务器,而不会因为你的计算机上的RSA私钥和服务器上的RSA公钥使用密码。
http://www.linuxproblem.org/art_9.html
Answer 7:
蒸馏这个答案留下一个简单而通用脚本:
#!/bin/bash
[[ $1 =~ password: ]] && cat || SSH_ASKPASS="$0" DISPLAY=nothing:0 exec setsid "$@"
将其保存为pass
,做一个chmod +x pass
,然后用它是这样的:
$ echo mypass | pass ssh user@host ...
如果它的第一个参数包含password:
然后它通过它的输入输出( cat
),否则它会启动whatver被设置本身作为后提出的SSH_ASKPASS
程序。
当ssh
遇到两个SSH_ASKPASS
和DISPLAY
设置,将推出由提到的程序SSH_ASKPASS
,通过它提示user@host's password: