alb*_*fan 18
基于这篇文章你可以做到:
创建一个使用SSH_ASKPASS打开ssh会话的命令(在man ssh上搜索SSH_ASKPASS )
$ cat > ssh_session <<EOF
export SSH_ASKPASS="/path/to/script_returning_pass"
setsid ssh "your_user"@"your_host"
EOF
Run Code Online (Sandbox Code Playgroud)
注意:为了避免ssh尝试询问tty,我们使用setsid
创建一个返回密码的脚本(注意echo"echo")
$ echo "echo your_ssh_password" > /path/to/script_returning_pass
Run Code Online (Sandbox Code Playgroud)
让它们可执行
$ chmod +x ssh_session
$ chmod +x /path/to/script_returning_pass
Run Code Online (Sandbox Code Playgroud)
试试吧
$ ./ssh_session
Run Code Online (Sandbox Code Playgroud)
请记住,ssh代表安全shell,如果您将用户,主机和密码存储在纯文本文件中,则会误导工具,从而产生可能的安全漏洞
ste*_*fen 13
您可以使用sshpass,例如在官方debian存储库中.例:
$ apt-get install sshpass
$ sshpass -p 'password' ssh username@server
Run Code Online (Sandbox Code Playgroud)
小智 5
旧帖又复活了……
我在寻找完全相同问题的解决方案时发现了这个,我发现了一些东西,我希望有一天有人会发现它有用:
SSH_ASKPASS变量 ( export SSH_ASKPASS=/usr/bin/ssh-askpass)setsid ssh user@host)这看起来很简单,很安全,但尚未检查(仅在本地安全上下文中使用)。
我们到了。
提炼这个答案留下一个简单而通用的脚本:
#!/bin/bash
[[ $1 =~ password: ]] && cat || SSH_ASKPASS="$0" DISPLAY=nothing:0 exec setsid "$@"
Run Code Online (Sandbox Code Playgroud)
将其另存为pass,执行 achmod +x pass然后像这样使用它:
$ echo mypass | pass ssh user@host ...
Run Code Online (Sandbox Code Playgroud)
如果它的第一个参数包含,password:那么它会将它的输入传递给它的输出 ( cat) 否则它会在将自己设置为SSH_ASKPASS程序后启动所呈现的任何内容。
当同时ssh遇到SSH_ASKPASSANDDISPLAY集合时,它会启动 引用的程序SSH_ASKPASS,并传递给它提示user@host's password:
| 归档时间: |
|
| 查看次数: |
45398 次 |
| 最近记录: |