from paramiko import *
hostname = 'ip'
port = 22
username = 'root'
password = 'xxxx'
util.log_to_file('paramiko.log')
s = SSHClient()
s.load_system_host_keys()
s.connect(hostname, port, username, password)
stdin,stdout,stderr = s.exec_command('df -h')
print(stdout.read())
s.close()
报错:paramiko.ssh_exception.SSHException: Server 'ip' not found in known_hosts
原因:/root/.ssh/known_hosts文件里面没有相关的ssh 登录秘钥
解决:
ssh 远程连接到对应的机器,如果出现known_hosts2 ,那么将 known_hosts2 中的 数据导入到 known_hosts 中
2.免密码登录
import paramiko
hostname = 'ip'
port = 22
username = 'root'
key_file = '/root/.ssh/id_rsa'
key = paramiko.RSAKey.from_private_key_file(key_file)
s = paramiko.SSHClient()
s.load_system_host_keys()
s.connect(hostname,port,username,pkey=key)
stdin,stdout,stderr = s.exec_command('df -h')
print stdout.read()
print stderr.read()
s.close()
其中的 id_rsa 为对方主机的 私钥,如果是 from_private_key_file(key_file,password) ,那么 password 就是你生成私钥时输入的 第一次密码
ssh-keygen -t rsa 生成 密钥对