在ssh会话期间禁用打开ssh对话框以获取密码



嗨,我正在使用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]) 的代码部分

好吧,你有几个选项:

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

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

最新更新