如何使ssh接收从标准输入密码(How to make ssh receive the passwo

2019-06-21 04:27发布

你怎么能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:

旧文章复兴...

我发现这是在寻找一个解决方案,以完全相同的问题,我找到了,我希望有人有一天会发现它非常有用:

  1. 安装SSH-askpass程序(apt-get的,百胜...)
  2. 设置SSH_ASKPASS变量( export SSH_ASKPASS=/usr/bin/ssh-askpass
  3. 从一个终端打开而不未定义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_ASKPASSDISPLAY设置,将推出由提到的程序SSH_ASKPASS ,通过它提示user@host's password:



文章来源: How to make ssh receive the password from stdin