Hướng dẫn ssh python - trăn ssh
Tiếp series lập trình Python, xin giới thiệu với các bạn đoạn code Python 3 sau sử dụng thư viện paramiko có nhiệm vụ kết nối SSH tới 1 Remote Linux Server và chạy command “cat /etc/*-release” trên đó.paramiko có nhiệm vụ kết nối SSH tới 1 Remote Linux Server và chạy command “cat /etc/*-release” trên đó. Kết nối SSH và chạy command sử dụng Python 3import paramiko ssh = paramiko.SSHClient() # Auto add host to known hosts ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # Connect to server ssh.connect("192.168.2.100", username="root", password="123456") # Do command (ssh_stdin, ssh_stdout, ssh_stderr) = ssh.exec_command("cat /etc/*-release") # Get status code of command exit_status = ssh_stdout.channel.recv_exit_status() # Print status code print ("exit status: %s" % exit_status) # Print content for line in ssh_stdout.readlines(): print(line.rstrip()) # Close ssh connect ssh.close() Kết quả chạy thử: Cài đặt paramiko module cho Python 3Để chạy đoạn code trên cần cài đặt Python Module/Package là paramiko, chúng ta cài thông qua pip3paramiko, chúng ta cài thông qua pip3 pip3 install paramiko Khắc phục một số lỗi khi cài đặt paramiko Fix lỗi:
pip3 install cryptography==2.4.2 Nguồn: vinasupport.com Mô hÌnh mạng: Gồm 1 máiy ảo kali linux, 1 bộ định tuyến cisco giả lập trênn gns3. 1. cấu hÌnh trên bộ định tuyến r1 1.1 CấU HÌNH SSH Phiên bản 2 #config Terminal (config) #Enable Mật khẩu & nbsp; mật khẩu (config) #line vty 0 4 (config-line)#mật khẩu & nbsp; 123 (config-line) #Login local (config-line) #exitconfig terminal . Phạm vi từ 360 đến 2048 cho các khóa mục đích chung của bạn. Chọn một mô đun chính lớn hơn 512 có thể mất vài phút. Làm thế nào nhiều bit trong mô đun [512]: 1024 (config) #IP SSH phiên bản 2username vnpro password 123 R1 (config) #Interface fastEthernet 0/0interface fastEthernet 0/0 R1 (config-if) #IP Địa chỉ DHCPip address dhcp R1 (config-if) #no shutdownno shutdown R1(config-if)#exitexit
FastEthernet0/0 là lên, giao thức dòng đã tăng Địa chỉ Internet là 192.168.186.131/24192.168.186.131/24 Địa chỉ phát sóng là 255.255.255.255 Địa chỉ được xác định bởi DHCP 2. Trên Kali Yêu cầu cần: Đạo 2.1 thực hiện kiểm tra kết nối ssh vào r1 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; SSH + Nếu gó lỗi " @@@@@@@@@ nhớ @& nbsp; & nbsp; & nbsp; Cảnh báo: Nhận dạng máy chủ từ xa đã thay đổi! @ @@@@@@@@@ nhớ @& nbsp; & nbsp; & nbsp; Cảnh báo: Nhận dạng máy chủ từ xa đã thay đổi! @ ", thực hiện lệnh sau:ssh-keygen -f "/root/.ssh/known_hosts" -R "192.168.186.131" & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ssh -keygen -f "/root/.ssh/known_hosts" -r "192.168.186.131" & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; + Nếu Có lỗi "Không tìm thấy phương thức trao đổi khóa phù hợp. Ưu đãi của họ: Diffie-Hellman-group1-sha1":ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; SSH -OKEXALGORITHMS =+Diffie-Hellman-Group1-Sha1 + Nếu Có lỗi "Không tìm thấy mật mã phù hợp. Ưu đãi của họ: AES128-CBC, 3DES-CBC, AES192-CBC, AES256-CBC": & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Tệp Truy Cập Vào:vi /etc/ssh/ssh_config & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; vi/etc/ssh/ssh_config & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Tệpso vào cuối:Ciphers aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; CIPHERS AES128-CBC, 3DES-CBC, AES192-CBC, AES256-CBC => Thực hiện kiểm tra lại kết nối ssh SSH -OKEXALGORITHMS =+Diffie-Hellman-Group1-Sha1 Tính xác thực của máy chủ '192.168.186.131 (192.168.186.131)' không thể được thiết lập. Dấu vân tay chính của RSA là SHA256: HSXD9PAK+WFL1W2NXJPJDHFTKHYU2THI2MIIPK4SWBS.yes Bạn có chắc là bạn muốn tiếp tục kết nối (có/không/[dấu vân tay])? Vâng Cảnh báo: Đã thêm vĩnh viễn '192.168.186.131' (RSA) vào danh sách các máy chủ đã biết.username vnpro password 123) R1>enable Mật khẩu của mình: [NHập 123] (Tên người dùng & NBSP; VNPRO & NBSP; Mật khẩu & NBSP; 123)password] (enable password password)
Kết nối ssh vào router r1 thàn 2.2 CÀi ĐặT thư Viện NetMiko Yêu cầu: Máiy ảo kali truy cập đun internet.sudo apt-get install python3-netmiko Thực hiện lệnh: sudo apt-get install python3-netmikoY để tiếp tục quá trình cài đặt) Không 2.3 lập trình python sử dụng thư viện netmiko Để Th 2.3.1 Tệp Tạo Python & NBSP; vi AddipInterface.py 2.3.2 Thiết Lập SSH từ NetMiko Nhập khẩu Connecthandler R1 = {'device_type': 'cisco_ios', & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Máy chủ': '192.168.186.131', & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Tên người dùng': 'VNPRO', & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'Mật khẩu': '123', & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 'mật khẩu bí mật', } net_connect = Connecthandler (** R1)
. Gán Giá trị Khim thực hiện Hàm Connecthandler Cho Biến Net_Connect. Tới đNy chún ta đeo thiết lập thong 2.2.3 sử dụng một số ha - Để GửI 1 Câu lệNH ĐếN Bộ định tuyến/Switch Quan SSH ở Chế độ Exec đặc quyền, Ta Dùnoutput = net_connect.send_command('sh ip int bri') print(output) & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; output = net_connect.send_command ('sh ip int bri')) net_connect.enable()net_connect.enable() - Để VÀO Chế độ EXEC đặc quyền, Ta DùnĐể gửi 1 câu lệnh đến Router/Switch ở config mode ta dùng hàm send_config_set(), VD: net_connect.enable() - Để GửI 1 CâU lệNH ĐếN Bộ định tuyến/Switch ở Cấu hình Chế độ ta net_connect.send_config_set(addIPInterface) Một số lệnh khác thường dùng : net_connect.save_config() - lưu cấu hình net_connect.find_prompt() - trả về tên host R/Sw net_connect.disconnect() - Đóng kết nối 2.3.4 File cấu hình về kết quả thực thi File addIPInterface.py như sau :addIPInterface.py như sau : Thực hiện chạy file addIPInterface.py : #python3 addIPInterface.py Kết quả :
Thông tin khác
|