嗨,我正在使用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])
的代码部分
好吧,你有几个选项:
- 目前,您的密钥已添加到带有
-c
选项的ssh代理中,该选项将显示确认对话框,要求您每次使用特定密钥时键入yes
。您可以从会话启动脚本中删除-c
选项,或者将ssh-agent
从默认的OpenSSH Ssh Agent更改为更高级(但可能不太安全)的变体,该变体允许您仅存储会话或其他内容的密钥 - 完全禁用ssh代理的使用,并通过
unset SSH_AUTH_SOCK
环境变量从终端提供密码短语。要做好准备,密码短语不能从STDOUT中读取,它们需要使用TTY来处理输入(检查pexpect) - 切换到无密码短语的密钥。如果是专用于机器人的密钥,这似乎不是一个重大的安全漏洞,因为你将以明文形式存储密码短语。但可能最好配置
实际上还有另一个名为DISPLAY的环境变量。取消设置DISPLAY和SSH_ASKPASS帮助我解决了这个