【问题标题】:disable open ssh dialog for password during ssh session在 ssh 会话期间禁用打开 ssh 对话框以获取密码
【发布时间】:2016-08-06 13:08:18
【问题描述】:

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

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

我附上了以下屏幕截图。我怎样才能禁用这个请帮忙。 click for screen shot

[编辑] 执行此操作的代码部分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])

【问题讨论】:

标签: python ssh openssh nomachine-nx


【解决方案1】:

嗯,你有几个选择:

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

【讨论】:

  • “当前您的密钥已通过 -c 选项添加到 ssh-agent 中”是什么意思。会话启动脚本在哪里?
  • 这取决于您当前使用的发行版。我从/etc/profile.d/中的脚本启动时添加密钥@
  • 或者您可以简单地重新添加不带-c 选项的密钥,以避免使用ssh-add 进行不必要的确认
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-08
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    相关资源
    最近更新 更多