问题1:

我的代码:

import paramiko

ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='127.0.0.1', port=4723, username='Administrator', password='***+158461')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('dir')
# 获取命令结果
result = stdout.read()
print(result)
# 关闭连接
ssh.close()

执行结果:
在这里插入图片描述
错误:paramiko.ssh_exception.NoValidConnectionsError: [Errno None] Unable to connect to port 4723 on 127.0.0.1
分析:
1、username和password没有问题,感觉是端口有错误。
2、windows10系统内置openssh客户端和openssh服务器,检查一下服务状态。
3、发现OpenSSH SSH Server为关闭状态—手动开启服务。
4、查看sshd的默认端口号是22。
路径:C:\ProgramData\ssh\sshd_config
在这里插入图片描述
5、查看端口号—>netstat -an
在这里插入图片描述
6、将代码中的端口号改成"22"。
再次执行脚本,依然报错,但错误变了,继续努力。。。

问题2:

错误:paramiko.ssh_exception.AuthenticationException: Authentication failed.
在这里插入图片描述
分析:没有权限,可能我真的把username写错了。。。。
改username为本地登录用户名,再次执行脚本,执行通过并执行了代码中的命令。

import paramiko

ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='127.0.0.1', port=22, username='User', password='wch+158461')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('dir')
# 获取命令结果
result = stdout.read()
print(result)
# 关闭连接
ssh.close()
Logo

一站式 AI 云服务平台

更多推荐