Python更新服务器SSH密钥
出于安全考虑,需要更换服务器上的ssh密钥,但是重复一台一台服务器更改又太浪费时间,这种重复又浪费时间的工作就交给计算机吧。在网上查了查,paramiko
正适合,看了看文档,不错,说干就干。
先安装paramiko
包
pip install paramiko
密钥忘生成了,我这里使用git-bash带的命令进行生成,切记不要忘记备份原密钥。
ssh-keygen -o
下面是对应的脚本,paramiko
使用起来还是比较优雅的,简单看看就能理解。
import paramiko
old_key = r'D:\tmp\id_rsa'
new_key = r'C:\Users\ROOT\.ssh\id_rsa'
new_pub_key = r'C:\Users\ROOT\.ssh\id_rsa.pub'
def ssh_key(host:str):
# 密钥
pkey = paramiko.RSAKey.from_private_key_file(old_key)
# 使用transport实现执行多个操作
trans = paramiko.Transport((host, 22))
trans.connect(username='root', pkey=pkey)
ssh = paramiko.SSHClient()
# 将sshclient的对象的transport指定为以上的trans
ssh._transport = trans
# 使用sftp上传文件
sftp = paramiko.SFTPClient.from_transport(trans)
sftp.put(localpath=new_pub_key, remotepath='/root/.ssh/authorized_keys')
sftp.put(localpath=new_key, remotepath='/root/.ssh/id_rsa')
stdin, stdout, stderr = ssh.exec_command('systemctl restart sshd')
print(stdout.read().decode())
trans.close()
if __name__ == '__main__':
ssh_key('192.168.1.200')
脚本运行之后,试试能不能登录上,登不上去那就。。。
参考文档
Python更新服务器SSH密钥
https://blog.yjll.blog/post/65ba80c8.html