python 批量ssh远程登录_Python - 使用SSH远程登录

一、SSH简介

SSH(Secure Shell)属于在传输层上运行的用户层协议,相对于Telnet来说具有更高的安全性。SSH是专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。

二、SSH远程连接

SSH远程连接有两种方式,一种是通过用户名和密码直接登录,另一种则是用过密钥登录。

1、用户名和密码登录

老王要在自己的主机登录老张的电脑,他可以通过运行以下代码来实现

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 跳过了远程连接中选择‘是’的环节,

ssh.connect('IP', 22, '用户名', '密码')

stdin, stdout, stderr = ssh.exec_command('df') print stdout.read()

在这里要用到paramiko模块,这是一个第三方模块,要自自己导入(要想使用paramiko模块,还要先导入pycrypto模块才能用)。

查看并启动ssh服务

service ssh status

添加用户:useradd -d /home/zet zet

passwd zet

赋予ssh权限

vi /etc/ssh/sshd_config

添加

AllowUsers:zet

2、密钥登录

老王要在自己的主机登录老张的电脑,老王用命令ssh.keygen -t rsa生成公钥和私钥,他将自己的公钥发给老张,使用ssh-copy-id -i ~/ssh/id_rsa.pub laozhang@IP命令

然后运行以下代码来实现

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect('IP', 22, '用户名', key)

stdin, stdout, stderr = ssh.exec_command('df') print stdout.read()

关于密钥登录,每个人都有一个公钥,一个私钥,公钥是给别人的,私钥是自己留着,只有自己的私钥能解开自己公钥加密的文件。

老王有一个机密文件要发给老张,就要先下载老张的公钥进行加密,这样老张就能用自己私钥解开这份机密文件,获得内容。

如果老张要确认是否是老王本人给他的机密文件,就去下载一个老王的公钥,随机写一些字符,用老王的公钥加密,发给老王,老王解密之后发回给老张,如果老张收到的解密后的字母和自己发出去的一样,对方就是老王无疑了。

三、使用SSH连接服务器

客户端代码:

#-*- coding:utf8 -*-

import threading

import paramiko

import subprocess

def ssh_command(ip, user, passwd, command, port = 22):

client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #设置自动添加和保存目标ssh服务器的ssh密钥

client.connect(ip, port, username=user, password=passwd) #连接

你可能感兴趣的:(python,批量ssh远程登录)