主要问题在于为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上的程序的,会提示标题所说的错误 如下图所示