Python 在ssh会话期间禁用密码的打开ssh对话框

Python 在ssh会话期间禁用密码的打开ssh对话框,python,ssh,openssh,nomachine-nx,Python,Ssh,Openssh,Nomachine Nx,您好,我正在使用NXclient(UNix/KDE)。我正在运行一个python脚本,它试图创建到另一台服务器的ssh会话,并执行一些自动化任务。基本上,我将密码存储在变量中,当SSH会话请求密码时,我只发送存储的密码。使用腻子效果很好 问题: 当我使用上面的nxclient时。每次SSH会话需要密码时,都会出现GUI提示,询问密码,这会冻结终端并导致脚本失败。我不想在gui中输入密码,因为密码已经存储在将要使用的变量中 我附上了下面的屏幕截图。如何禁用此功能,请帮助。 [编辑] 当密码提示时

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

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

我附上了下面的屏幕截图。如何禁用此功能,请帮助。

[编辑] 当密码提示时执行该操作的代码部分: sendline(getpass.getpass('输入您的windows密码:')) 其他: sendline(ssh\u密码) i=child.expect([os.path.basename(keyfile),pexpect.TIMEOUT])

嗯,您有几个选择:

  • 当前,您的钥匙已进入
    -c
    选项,该选项会在每次使用特定钥匙时显示确认对话框,要求您键入
    yes
    。您可以从会话启动脚本中删除
    -c
    选项,或者将
    ssh-agent
    从默认的OpenSSH-ssh-agent更改为更奇特(但可能不太安全)的变体,该变体允许您仅为会话或其他方式存储密钥
  • 完全禁用ssh代理的使用,并通过
    unset ssh\u AUTH\u SOCK
    环境变量从终端提供密码短语。准备好不能从标准输出读取密码短语,它们需要使用TTY来处理输入(检查)
  • 切换到无密码密钥。对于专用于机器人的密钥,这似乎不是一个重大的安全漏洞,因为您将以纯文本形式存储密码短语。但可能最好是进行配置

  • 嗯,你有几个选择:

  • 当前,您的钥匙已进入
    -c
    选项,该选项会在每次使用特定钥匙时显示确认对话框,要求您键入
    yes
    。您可以从会话启动脚本中删除
    -c
    选项,或者将
    ssh-agent
    从默认的OpenSSH-ssh-agent更改为更奇特(但可能不太安全)的变体,该变体允许您仅为会话或其他方式存储密钥
  • 完全禁用ssh代理的使用,并通过
    unset ssh\u AUTH\u SOCK
    环境变量从终端提供密码短语。准备好不能从标准输出读取密码短语,它们需要使用TTY来处理输入(检查)
  • 切换到无密码密钥。对于专用于机器人的密钥,这似乎不是一个重大的安全漏洞,因为您将以纯文本形式存储密码短语。但可能最好是进行配置

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

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

    您可以切换到更安全的模式您可以切换到更安全的模式您所说的“当前您的密钥已通过-c选项添加到SSH代理中”是什么意思。会话启动脚本在哪里?这取决于您当前使用的发行版。Mine在启动时从
    /etc/profile.d/
    中的脚本添加密钥,或者您可以不使用
    -c
    选项简单地重新添加密钥,以避免使用
    ssh add
    进行不必要的确认,您所说的“当前您的密钥已使用-c选项添加到ssh代理中”是什么意思。会话启动脚本在哪里?这取决于您当前使用的发行版。Mine在启动时从
    /etc/profile.d/
    中的脚本添加密钥,或者您可以不使用
    -c
    选项简单地重新添加密钥,以避免使用
    ssh add
    进行不必要的确认