1

嗨,我正在使用 NXclient (UNIx/KDE)。我正在运行一个 python 脚本,它试图创建到另一台服务器的 ssh 会话并执行一些自动化任务。基本上我将密码存储在变量中,当 SSH 会话要求输入密码时,我只需发送存储的密码。使用腻子效果很好。

问题:当我使用上面的 nxclient. 每次 SSH 会话需要密码时,都会出现一个 GUI 提示,要求输入密码,这会冻结终端并使我的脚本失败。我不想在 gui 中输入密码,因为密码已经存储在将要使用的变量中。

我附上了以下屏幕截图。我怎样才能禁用这个请帮忙。 点击屏幕截图

[编辑] 执行此操作的代码部分if password_prompt: child.sendline(getpass.getpass('Enter your windows password: ')) else : child.sendline(ssh_password) i = child.expect([os.path.basename(keyfile), pexpect.TIMEOUT])

4

2 回答 2

0

好吧,你有几个选择:

  1. 目前,您的密钥已添加ssh-agent中,该选项会在每次使用特定密钥时-c显示确认对话框,要求您输入。您可以从会话启动脚本yes中删除该选项,或者从默认的 OpenSSH Ssh-Agent 更改为更花哨(但可能不太安全)的变体,这将允许您仅为会话或其他方式存储密钥等-cssh-agent
  2. 完全禁用 ssh-agent 并通过unset SSH_AUTH_SOCK环境变量从终端提供密码。准备好无法从 STDOUT 读取密码短语,它们需要使用 TTY 来处理输入(检查pexpect
  3. 切换到无密码密钥。对于专用于机器人的密钥,这似乎不是重大的安全漏洞,因为您将以纯文本形式存储密码。但可能最好配置
于 2016-04-14T20:32:32.693 回答
0

实际上还有另一个名为 DISPLAY 的环境变量。取消设置 DISPLAY 和 SSH_ASKPASS 帮助我解决了这个问题

于 2016-04-19T22:48:14.677 回答