Paramiko 相当于 ssh host -t bash

问题描述 投票:0回答:1

在我的 Python3 脚本中,我尝试使用 Paramiko ssh 到远程设备。我可以做到这一点。问题是

ssh
将我转入专有 shell。我需要将
-t bash
添加到
.connect
命令中以将我转储到 bash shell 中。这是我所拥有的有效方法:

ssh_tranfer = paramiko.SSHClient()
ssh_transfer.set_missing_host_key_policy(paramiko.AutoAddPolicy)

ssh.connect(hostname=device, port=22, username=username, key_filename=private_key_name)

有了这个,我可以很好地连接,但就像我说的,我处于专有 shell 中,无法传递命令。我什至不确定我是否可以这样做。

我在上面显示的

ssh.connect
之前定义了我正在使用的所有参数(即设备、用户名和私钥)。

如果我直接从计算机通过 ssh 进入设备并直接进入 bash shell,我会使用:

ssh [email protected] -t bash

我想找到一种使用 paramiko 来做到这一点的方法。

感谢您的帮助!

python ssh paramiko
1个回答
2
投票

-t
中的
bash
+
ssh
做了两件事:

  • 在“exec”通道中启动命令
    bash
    (而不是启动“shell”通道,
    ssh
    默认执行的操作)。
    为此,请参阅 Python Paramiko - 运行命令
  • -t
    强制进行交互式会话,这是“shell”的默认设置,但默认情况下对“exec”禁用。 为此,请将
    get_pty=True
    传递给
    SSHClient.exec_command

强制性警告:请勿以这种方式使用

AutoAddPolicy
– 这样做您将失去针对 MITM 攻击的保护。正确的解决方案请参阅Paramiko“未知服务器”

© www.soinside.com 2019 - 2024. All rights reserved.