PYTHON通過金鑰SSH遠端登陸伺服器並執行命令

2021-08-28 20:33:43 字數 2477 閱讀 7082

系統環境:centos7

先做好ssh金鑰登陸的配置,簡單一些說就是將a機器的/root/.ssh/id_rsa.pub的內容追加到b機器的/root/.ssh/authorized_keys當中

從而以root使用者的資格在a機器實現對b機器的金鑰認證登陸

python的指令碼如下:

[root@v71 python]# cat 5s.py 

#!/usr/bin/python

# -*- coding:utf-8 -*-

import paramiko

import sys

def sshexeccmd(ip,cmd):

try:

ssh = paramiko.sshclient()

#add to host_allow

ssh.set_missing_host_key_policy(paramiko.autoaddpolicy())

# pkey = paramiko.rsakey.from_private_key_file('/home/super/.ssh/id_rsa', password='yourpassword')

pkey = paramiko.rsakey.from_private_key_file('/root/.ssh/id_rsa')

ssh.connect(hostname=ip,

port=22,

username='root',

pkey=pkey)

stdin, stdout, stderr = ssh.exec_command("ifconfig")

print(stdout.read())

print(stderr.read())

ssh.close()

except exception,e:

print e

if __name__ =='__main__':

if len(sys.argv) != 3:

print 'python pyfile ip cmd'

sys.exit()

print 'host: %s' % sys.argv[1]

print 'cmd: %s' % sys.argv[2]

sshexeccmd(sys.argv[1],sys.argv[2])

print '$' * 100

執行效果:

[root@v71 python]# python 5s.py 192.168.156.72 ifconfig

host: 192.168.156.72

cmd: ifconfig

eno16777736: flags=4163mtu 1500

inet 192.168.156.72  netmask 255.255.255.0  broadcast 192.168.156.255

inet6 fe80::20c:29ff:fe40:7a2f  prefixlen 64  scopeid 0x20

ether 00:0c:29:40:7a:2f  txqueuelen 1000  (ethernet)

rx packets 86458  bytes 68290823 (65.1 mib)

rx errors 0  dropped 0  overruns 0  frame 0

tx packets 69211  bytes 19138737 (18.2 mib)

tx errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73mtu 65536

inet 127.0.0.1  netmask 255.0.0.0

inet6 ::1  prefixlen 128  scopeid 0x10

loop  txqueuelen 0  (local loopback)

rx packets 4  bytes 420 (420.0 b)

rx errors 0  dropped 0  overruns 0  frame 0

tx packets 4  bytes 420 (420.0 b)

tx errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099mtu 1500

inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255

ether 52:54:00:87:fc:af  txqueuelen 0  (ethernet)

rx packets 0  bytes 0 (0.0 b)

rx errors 0  dropped 0  overruns 0  frame 0

tx packets 0  bytes 0 (0.0 b)

tx errors 0  dropped 0 overruns 0  carrier 0  collisions 0

檢測遠端埠是否開通 ssh通過 pem金鑰登入

檢測遠端埠 1 常用telnet 110.101.101.101 80方式測試遠端主機埠是否開啟 window 安裝telnet 控制面板 開啟或關閉windows功能 選擇 telnet 客戶端 linux ubuntu sudo apt get install xinetd telnetd ce...

ssh通過金鑰進行驗證

ssh在兩台機器之間建立乙個安全通道,加密所有的資料。比如機器a通過ssh登入到機器b 機器a為ssh客戶端,機器b為ssh伺服器 1 確認在機器b上有乙個帳號。2 在機器a上生成金鑰對 ssh keygen t rsa 第一行輸入存放金鑰對的目錄,直接回車預設就行 自動存放在 ssh 目錄下,id...

ssh 通過rsa金鑰進行登入

ssh登入伺服器的方法大體上分為兩種 通過ssh使用使用者名稱密碼的方式登入 通過ssh使用金鑰對進行登入 本文主要闡述如何使用金鑰進行登入,以如如何管理多個金鑰對。即然是金鑰對,就說是兩個金鑰,我們把其中乙個需要存在本地計算機的金鑰稱為私鑰,把另乙個存放到伺服器的金鑰稱為公鑰。私鑰 要保護好的,不...