fabric在Redhat8上请求ssh用户的密码,尽管我可以成功地通过终端进行ssh(在centos上没有问题)



在终端上,我可以在没有密码的情况下成功地ssh到目标服务器。目标服务器是redhat8。但是使用fabric(我尝试了fabric==1.14.0和fabric==2.6.0(,在等待密码时都失败了。

这是我的测试代码:

host = 'fake_host'
access_account = 'fake_user'
def test_connection():
with settings(user=access_account, host_string=host):
run('ls -la')
test_connection()

这就是结果:

run: ls -la
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/getpass.py:83: GetPassWarning: Can not control echo on the terminal.
passwd = fallback_getpass(prompt, stream)
Warning: Password input may be echoed.
[fake_host] Login password for '<fake_user>': 

如果我明确地设置了密钥文件,则没有什么区别。

我们有另一台服务器,它的操作系统是centOS7,具有相同的设置,我们可以成功地在没有密码的情况下ssh到服务器,并且可以使用相同的结构代码成功地运行命令。

可能的原因是什么?

我们发现原因是目标服务器上的高安全设置。修复:编辑/etc/crypto policys/backends/opensshserver.config->添加";ssh-rsa";至"-oPubkeyAcceptedKeyTypes";。示例:"-oPubkeyAcceptedKeyTypes=ssh-rsa";

最新更新