首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从调用bash的Tcl脚本认证passkey?

如何从调用bash的Tcl脚本认证passkey?
EN

Stack Overflow用户
提问于 2010-06-10 23:50:42
回答 2查看 608关注 0票数 1

我有一个tcl脚本,它从bash调用了很多函数,包括ssh。我正在努力的部分看起来像这样:

代码语言:javascript
复制
proc connect {where} {
    set bash c:/cygwin/bin/bash
    catch {exec $bash -c "ssh $where"} result
    puts $result
}
connect user@localhost

我收到身份验证失败的消息:

代码语言:javascript
复制
Pseudo-terminal will not be allocated because stdin is not a terminal.
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password,keyboard-interactive).

我不知道如何提示用户输入密码(无论是显示控制台还是tk窗口,都无关紧要),这样身份验证才能通过。

我使用bash to ssh的原因是,最终我希望使用脚本连接到github (需要提示输入密钥)。

EN

回答 2

Stack Overflow用户

发布于 2010-06-11 01:42:27

试试这个:

代码语言:javascript
复制
puts -nonewline "enter your passphrase: "
flush stdout
gets stdin passphrase
exec $bash -c "ssh $where" << $passphrase

exec<<参数在其标准输入中将给定值传递给命令

如果这不起作用,您将不得不尝试Expect,或者使用没有密码短语的密钥。

票数 2
EN

Stack Overflow用户

发布于 2010-06-15 21:06:22

一个重要的替代方案(我建议)是设置一个本地密钥处理代理(例如,ssh-agentpageant)来保存解密的密钥,这样您的代码根本不需要处理密码。总的来说,我发现这是一个简单得多的方法,因为它使许多代码不必理解任何关于密码的东西(这比你可能认为的…更难正确处理)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3016054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档