如何使用 Paramiko SSH 到需要双密码身份验证的服务器?使用特定用户时,它首先提示输入用户密码,然后提示输入另一个密码,因此我的会话需要是交互式的。我已经使用 pexpect 模块ssh在 Linux上生成了一个进程,但由于我无法在 Windows 中执行此操作,因此我需要一种使用 Paramiko的方法来执行此操作。服务器是我们的产品,是对 CentOS 稍作修改的版本。我正在编写自动化代码来测试一些需要我通过 ssh 进入服务器并验证一些命令的功能。我能够以 root 用户身份登录,但对于我感兴趣的用户,它要求输入第二个密码。我无法执行这样的命令:ssh -vvv -p2222 nobrk1n@10.213.23.112 ls执行上述命令时,系统会提示我输入 nobrk1n 用户的密码。但是在输入密码时它会卡住。我已将上述命令的输出粘贴到https://pastebin.com/hSfiCmdi。通常我首先使用 ssh 进入服务器ssh -p2222 user@host,当建立连接并成功登录时,我开始执行命令。
1 回答
紫衣仙女
TA贡献1839条经验 获得超15个赞
您的服务器对第一个密码使用标准密码身份验证。
只有在 shell 启动时才询问第二个密码。简单的 I/O 就是用来做这个的。
此外,您的服务器似乎不支持“exec”接口/通道来执行命令(因为ssh user@host command不起作用)。什么可能与“shell 密码”功能有关。所以你可能必须使用“shell”通道来执行你的命令,否则不推荐。
ssh = paramiko.SSHClient()
ssh.connect(hostname, username = username, password = password1)
channel = ssh.invoke_shell()
channel.send(password2 + "\n")
channel.send(command + "\n")
while not channel.recv_ready():
time.sleep(1)
out = channel.recv(9999)
添加回答
举报
0/150
提交
取消