Python SSH批量密钥登录
在进行服务器管理时,经常需要通过SSH协议登录服务器进行操作。而使用密钥登录相比密码登录更加安全和方便,可以大大提高服务器的安全性。本文将介绍如何使用Python实现批量密钥登录,以便简化管理多台服务器的过程。
密钥登录原理
密钥登录是通过将本地生成的公钥上传到服务器端,以实现无需输入密码即可登录的方式。具体原理是:本地生成一对密钥(公钥和私钥),将公钥上传到服务器的authorized_keys文件中。当使用私钥连接服务器时,服务器会验证私钥和公钥是否匹配,如果匹配则登录成功。
Python实现批量密钥登录
首先,我们需要安装paramiko库,用于实现SSH连接和操作。
pip install paramiko
接下来,我们编写Python代码实现批量密钥登录功能。具体步骤如下:
- 导入必要的库
import paramiko
- 定义服务器列表和密钥路径
server_list = [
{'hostname': 'server1', 'username': 'root'},
{'hostname': 'server2', 'username': 'root'}
]
private_key_path = '/path/to/private_key'
- 批量连接服务器并执行命令
def ssh_login(hostname, username, private_key_path):
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
private_key = paramiko.RSAKey.from_private_key_file(private_key_path)
try:
client.connect(hostname=hostname, username=username, pkey=private_key)
stdin, stdout, stderr = client.exec_command('ls')
print(stdout.read().decode())
except Exception as e:
print(f'Error connecting to {hostname}: {str(e)}')
finally:
client.close()
for server in server_list:
ssh_login(server['hostname'], server['username'], private_key_path)
以上代码中,我们定义了一个ssh_login
函数,用于连接服务器并执行ls
命令。然后遍历服务器列表,分别连接每台服务器并执行命令。
结语
通过上述方法,我们可以实现批量密钥登录多台服务器,简化管理和操作过程。在实际应用中,可以根据需求扩展功能,比如批量上传文件、执行脚本等。同时,密钥登录可以提高服务器的安全性,避免密码泄露的风险。
pie
title 配置方式占比
"密钥登录" : 70
"密码登录" : 30
希望本文对您有所帮助,谢谢阅读!