通過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用戶設置如下圖

如果在 shell access type 那一欄如果選的是默認的 No shell access ,那麼你在本地是沒有辦法執行遠程windows上的程序的,會提示標題所說的錯誤   如下圖所示

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章