paramiko 模块
paramiko 模块
1 远程连接ssh
1.1 使用用户名及密码连接ssh
import paramiko
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
# 连接服务器
ssh.connect(
hostname="10.1.1.5",
port=22,
username="root",
password="toor",
)
# 执行命令
stdin, stdout, stderr = ssh.exec_command("df")
# 获取命令结果
res = stdout.read()
# 关闭连接
ssh.close()
print(res)
1.2 使用公私钥远程连接ssh
-
使用 ssh-keygen 生成 RSA 加密方式的公私钥文件
[root@ac ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:RpehMZSl4r7ugXtLv5itUlLzWwcxz5OB9MgoXJmllP0 root@ac.lab The key's randomart image is: +---[RSA 2048]----+ | .*X=. | | . o=O==. | | + * =*.o | | .o+ .. E | | ..oS . . | | .o... . . | | .o+ o . | | .o.B. | | .=Oo+. | +----[SHA256]-----+ [root@ac ~]# cd .ssh/ [root@ac .ssh]# ls id_rsa id_rsa.pub
-
将生成的rsa私钥文件拷贝至本地当前目录
import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy) private_key = paramiko.RSAKey.from_private_key_file(filename="id_rsa") # 连接服务器 ssh.connect( hostname="10.1.1.5", port=22, username="root", password="toor", pkey=private_key ) # 执行命令 stdin, stdout, stderr = ssh.exec_command("df") # 获取命令结果 res = stdout.read() # 关闭连接 ssh.close() print(res)
2 上传下载文件
import paramiko
# 创建文件传输对象
file_trans = paramiko.Transport(("10.1.1.5", 22))
# 连接服务器
file_trans.connect(username="root", password="toor")
sftp = paramiko.SFTPClient.from_transport(file_trans)
# 将 getssh.py 上传至服务器 /tmp/ssh.py
sftp.put("./getssh.py","/tmp/ssh.py")
# 将服务器 /etc/passwd 下载至本地 passwd.txt
sftp.get("/etc/passwd","./passwd.txt")
file_trans.close()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~