Paramiko BadAuthenticationType

BadAuthenticationType at /assets_online/
('Bad authentication type', [u'publickey', u'gssapi-keyex', u'gssapi-with-mic']) (allowed_types=[u'publickey', u'gssapi-keyex', u'gssapi-with-mic'])


paramiko通过 ip,username,password操作远程机器,一直是正常的,突然添加一台新机器时一直报错
然后排查对比,发现sshd配置了密匙登录,允许账户密码登录
PasswordAuthentication no


解决方法:
1, PasswordAuthentication yes
2, paramiko 使用key登录
3, 禁止除用户zhanghb以外其他用户使用口令登录:
Match User *, !foo
    PasswordAuthentication no
解决方法:
1, PasswordAuthentication yes
2, paramiko 使用key登录
3, 禁止除用户zhanghb以外其他用户使用口令登录:
Match User *, !foo
    PasswordAuthentication no
使用paramiko库进行SSH连接时,采用`publickey`认证通常涉及以下几个步骤: 1. **生成SSH密钥对**: - 在本地计算机上创建一个新的SSH密钥对,包括公钥(`id_rsa.pub`)和私钥(`id_rsa`)。你可以使用`ssh-keygen`命令行工具生成,例如: ``` $ ssh-keygen -t rsa ``` - 私钥文件应妥善保管,通常不会直接传输,而公钥则会发送给需要访问的远程服务器。 2. **将公钥添加到远程服务器**: - 登录到远程服务器,将本地生成的公钥复制到`~/.ssh/authorized_keys`文件中。如果是初次添加,可能会提示确认是否允许此用户登录。 ``` $ ssh-copy-id user@remote_host ``` 3. **修改远程服务器的SSH配置**: - 如果`authorized_keys`文件需要特定权限,确保它能被需要的用户或组读取。 4. **paramiko连接配置**: - 使用paramiko创建SSH客户端对象时,指定用户名、主机名以及私钥路径(通常是加密过的私钥文件)。由于私钥安全性原因,建议不要硬编码密码: ```python import os from paramiko import SSHConfig config = SSHConfig() # 加载系统SSH配置 config.parse(os.path.expanduser("~/.ssh/config")) # 从config文件读取服务器信息 host_config = config.lookup('host_name') # 获取目标主机的信息 client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动添加新主机的密钥 key_filename = host_config.get('identityfile', '~/.ssh/id_rsa') client.connect(host_config['hostname'], username=host_config['user'], pkey=paramiko.RSAKey.from_private_key_file(key_filename)) ``` 5. **安全处理**: - 一旦连接成功,记得关闭连接,特别是当程序结束时: ```python client.close() ``` 使用`publickey`认证的好处在于它不需要明文密码传输,提高了安全性。如果你遇到`BadAuthenticationType`错误,可能是公钥配置错误或服务器未正确配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值