如遇安装python模块问题,请参考此连接处理:http://t.csdnimg.cn/l9W6f
一、命令行中使用ssh连接
1、安装 OpenSSH 客户端:
- 在 Windows 10 中,打开“设置”应用,选择“应用” > “可选功能” > “添加功能”。
- 找到并安装“OpenSSH 客户端”。
- 启动sshd
net start sshd
2、确保目标计算机上已配置 OpenSSH 服务器:
- 在要连接的 Windows 计算机上,按照相应的指南安装并配置 OpenSSH 服务器。
- 启动
-
sshd net start sshd
注:状态查看
Add-WindowsCapability -Online -Name OpenSSH.Server*
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Server*'
3、连接另一台 Windows 计算机:
打开命令提示符(cmd)或 PowerShell。
使用以下命令连接到目标计算机:
ssh username@remote_computer_ip
其中,username 是目标计算机上的用户名,remote_computer_ip 是目标计算机的 IP 地址。
4、输入密码
输入目标计算机上对应用户的密码,以建立 SSH 连接。
二、python模块paramiko
参考连接:https://www.cnblogs.com/10086upup/p/17621364.html
paramiko是一个基于SSHv2协议的纯Python(2.7,3.4+)库;
- 提供了客户端和服务器的功能;
- 可以实现SSH2远程安全连接,支持认证和密钥方式;
- 一般用于执行远程命令、传输文件、中间SSH代理等。
- paramiko可以在Python代码中直接使用SSH协议对远程服务器进行操作,而不是调用ssh命令对远程服务器进行操作。
前置条件:
两台windows电脑的ssh已启动。环境配置如第一种方法所述。
1、安装
pip install paramiko
2、代码示例
import paramiko
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# time.sleep(10)
# 连接远程电脑
ssh.connect(hostname='ip', port=22, username='comptername', password='compterpwd', timeout= 60)
# time.sleep(10)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('ipconfig')
# 打印输出结果
print(stdout.read())
# 关闭连接
ssh.close()
三、winrm
WinRM服务基于HTTP(HTTPS)协议,使用5985端口(HTTPS使用5986端口)。按照微软官方的介绍:Windows2008 R2以上版本的操作系统,默认开启WinRM服务,因此,在使用时只需将防火墙相应的5985(或5986)端口开放即可;
1、安装pywinrm
pip install pywinrm
2、配置服务器winrm服务
以管理员方式cmd
右键点击这里,
winrm service 基础配置:
winrm quickconfig
查看winrm service listener:
winrm e winrm/config/listener
为winrm service 配置auth:
winrm set winrm/config/service/auth @{Basic="true"}
为winrm service 配置加密方式为允许非加密:
winrm set winrm/config/service @{AllowUnencrypted="true"}
若此处报错,这是因为网络连接属性“公用”导致。将其改为“专用”即可。
设置后,操作不报错,有相关信息即可。
3、代码示例
import winrm # pip install pywinrm
session = winrm.Session('http://computerip/wsman',auth=('computername','computerpwd'))
command = r'ipconfig'
result = session.run_cmd(command) #cmd执行
#result = session.run_ps(command) #powershell执行
print(result)
print(result.status_code)
code = result.status_code
# 根据返回码,获取响应内容(bytes)
content = result.std_out if code == 0 else result.std_err
try:
result = content.decode("utf8")
except:
result = content.decode("GBK")
print(result)
更多参考如下:
python选用pywinrm模块连接远程的windows服务器:http://t.csdnimg.cn/gN0YZ
http://t.csdnimg.cn/Rb2mb
http://t.csdnimg.cn/vCxp9 带有详细设置
http://t.csdnimg.cn/nu0vy
http://t.csdnimg.cn/GAWvp 使用Protocol方法、使用session方法