尝试使用 SSH 和 paramiko 从 Windows 服务器 SSH 到 Linux 远程连接,并使用以下代码“pwd”该服务器(我已从真实代码更改了用户/密码和服务器 IP):
import paramiko
from paramiko import SSHClient, AutoAddPolicy
LOCAL_IP=IP
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(LOCAL_IP,username=username, password=password)
client.exec_command('pwd')
我得到以下结果:
(<paramiko.ChannelFile from <paramiko.Channel 0 (open) window=24576 -> <paramiko.Transport at 0x6716710L (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>>,
<paramiko.ChannelFile from <paramiko.Channel 0 (open) window=24576 -> <paramiko.Transport at 0x6716710L (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>>,
<paramiko.ChannelFile from <paramiko.Channel 0 (open) window=24576 -> <paramiko.Transport at 0x6716710L (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>>)
SSH 连接已打开,我可以通过 Linux 服务器上的 netstat 得知我正在尝试通过 SSH 访问......
最佳答案
client.exec_command 返回一个 stdin、stdout 和 stderr 流的元组 - 您需要分配这些流并调用 read() 来获取输出:
import paramiko
from paramiko import SSHClient, AutoAddPolicy
LOCAL_IP=IP
PORT=your_port
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(LOCAL_IP, PORT, username="username", password="password")
stdin, stdout, stderr = client.exec_command("pwd")
print(stdout.read())
关于python - 使用 paramiko 和 exec_command 进行 SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49896802/