pycharm登录linux
代码:
import paramiko
def login_ssh_passwd(hostname='192.168.211.128', port=22,
username='root', pasword=None, command='hostname'):
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=hostname, port=port,
username=username,password=pasword)
stdin, stdout, stderr = client.exec_command(command)
return stdout.read().decode('utf-8')
if __name__ == '__main__':
result = login_ssh_passwd(pasword='westos')
print(result)
运行结果:
ssh无密码自动连接
client:产生公钥id_rsa.pub和私钥id_rsa,并将公钥id_rsa.pub发送给server主机
server:接受公钥id_rsa.pub后,持有私钥id_rsa的client主机即可远程登陆
操作步骤
1、在client主机输入ssh-keygen命令
2、在client主机输入ssh-copy-id -i root@192.168.211.128,将公钥发送给root用户的目标主机
在pycharm上无密码登录root
代码:
import paramiko
def login_ssh_key(hostname='192.168.211.128', port=22,
username='root', keyfile=None, command='hostname'):
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
private = paramiko.RSAKey.from_private_key_file(keyfile)
client.connect(hostname=hostname, port=port,
username=username,pkey=private)
stdin, stdout, stderr = client.exec_command(command)
return stdout.read().decode('utf-8')
if __name__ == '__main__':
result = login_ssh_key(keyfile='/home/westos/.ssh/id_rsa')
print(result)
运行结果:
上传与下载文件
代码:
import paramiko
def put_file_ssh_key(hostname='192.168.211.128', port=22,
username='root', keyfile=None, command='hostname'):
tran = paramiko.Transport((hostname,port))
private = paramiko.RSAKey.from_private_key_file(keyfile)
tran.connect(username='root',pkey=private)
sftp = paramiko.SFTPClient.from_transport(tran)
sftp.put('/etc/passwd','/mnt/aa')
if __name__ == '__main__':
result = put_file_ssh_key(keyfile='/home/westos/.ssh/id_rsa')
print(result)
运行结果: