通过paramiko远程执行windows命令出现:paramiko.ssh_exception.SSHException: Channel closed. 的解决方法

主要问题在于为windows上的ssh的设置,paramiko连接是没有问题的

想法是远程执行windows服务器上的python程序,通过ssh连接,我在windows服务器上通过winsshd软件个windows安装了ssh服务,但是在创建虚拟用户的时候没有给用户对应的操作权限,所以在通过paramiko使用ssh的账号密码连接执行远程windows服务器上的python脚本时会出现下面错误 

我的连接代码如下,使用的是python3

import paramiko


def ssh_connect(ip, user, pwd):
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(ip, username=user, password=pwd)
    return ssh


def execute_command(device_details, command):
    ip = device_details.get("ip")
    username = device_details.get("username")
    password = device_details.get("password")
    ssh_obj = ssh_connect(ip, username, password)
    print(ip, username, password)
    # 执行cmd命令 command
    ssh_stdin, ssh_stdout, ssh_stderr = ssh_obj.exec_command(command)
    print(ssh_stderr.read())
    print(ssh_stdout.read())
    return ssh_stdout.read()


device_details = {
    "ip": '144.***.***.***', "username": 'test', "password": 'test'
}
command = "cmd /c C:/python36/python.exe D:/demo.py"

output = execute_command(device_details, command)
print(output)

 远程windows服务器上的ssh用户设置如下图

通过paramiko远程执行windows命令出现:paramiko.ssh_exception.SSHException: Channel closed. 的解决方法_第1张图片

如果在 shell access type 那一栏如果选的是默认的 No shell access ,那么你在本地是没有办法执行远程windows上的程序的,会提示标题所说的错误   如下图所示

通过paramiko远程执行windows命令出现:paramiko.ssh_exception.SSHException: Channel closed. 的解决方法_第2张图片

 

 

你可能感兴趣的:(python运维,linux)