pxssh使用含特殊字符的密码登录服务器失败,求解决方法
解决pxssh登录时含特殊字符密码被拒绝的问题
这个问题很常见——当密码里包含@这类shell特殊字符时,pxssh在传递密码的过程中,shell会把这些字符当成元字符解析,导致服务器实际收到的密码和你输入的不一致,所以才会抛出「Password Refused」错误。
给你两个可行的解决方案:
方案1:用shlex.quote()转义密码
shlex.quote()可以自动处理所有shell特殊字符,把密码包装成shell能正确识别的格式,避免解析错误。修改后的代码如下:
import pxssh import shlex # 定义带特殊字符的密码 password = 'Tes123P@ss' # 转义密码中的特殊字符 escaped_password = shlex.quote(password) s = pxssh.pxssh() s.login('mylabserver4.com', 'testuser', escaped_password)
方案2:手动用单引号包裹密码
如果不想引入额外模块,也可以手动给密码加上单引号,因为shell会将单引号内的内容视为纯文本,不会解析其中的特殊字符:
import pxssh s = pxssh.pxssh() # 用单引号包裹密码 s.login('mylabserver4.com', 'testuser', "'Tes123P@ss'")
这两种方法都能确保你的完整密码被正确传递给服务器,解决「Password Refused」的问题。如果密码里包含单引号,方案1会更可靠,因为shlex.quote()会自动处理这种情况。
内容的提问来源于stack exchange,提问作者Srinija Vinnakota
相关产品推荐
相关产品推荐

