当前位置: 首页 > news >正文

解决ssh拉取服务器数据,要多次输入密码的问题

问题在于,每次循环调用 rsync 都是新开一个连接,所以每次都需要输入一次密码。为了只输入一次密码,有以下几种方式可以解决:


推荐方案:设置 SSH 免密登录

最稳最安全的方式是:配置 SSH 免密登录,一次配置,永远不输密码。

步骤如下:

  1. 本地生成 SSH 密钥(如果还没有):

ssh-keygen -t rsa

按默认选项一路回车。

  1. 将公钥传到远程主机

ssh-copy-id host@172.31.178.114
  1. 测试一下登录是否不再需要密码:

ssh host@172.31.178.114

如果你能直接登录,rsyncscp 就都不再需要密码了。


🔁 如果你现在急用,不想配置免密,那可以用 sshpass 工具自动输入密码(不太安全)

安装:

sudo apt install sshpass

修改你的脚本:

import os
import subprocessremote_base = "/home/host/Data/"
local = "/data/datasets/"
user_host = "host@172.31.xxx.xxx"
password = "your_password"  # 不安全,不推荐长期写在脚本里flysLists = ["xxx", "xxx", "xxxx", # ... 省略其余列表 ..."xxx", "xxx"
]for fly in flysLists:remote_path = os.path.join(remote_base, fly)full_remote = f"{user_host}:{remote_path}"cmd = ["sshpass", "-p", password,"rsync", "-azP", full_remote, local]subprocess.run(cmd)print("finished: ", fly)

🧠 总结推荐

方法安全性推荐度特点
SSH 免密登录✅✅✅⭐⭐⭐⭐⭐配置一次,终身受益
sshpass⭐⭐快捷测试,不推荐长期使用

相关文章:

  • 基于ssm的同城上门维修平台管理系统(源码+数据库)
  • 矫平机深度解析:操作实务、行业标准与智能化升级
  • 【金仓数据库征文】交通行业的国产化数据库替换之金仓数据库KingbaseES应用实践
  • FlinkJobmanager深度解析
  • 【中级软件设计师】函数调用 —— 传值调用和传地址调用 (附软考真题)
  • C#中实现XML解析器
  • Vue 3 父子组件通信案例详解:Props 与 Emits 实战
  • MySQL 详解之用户、权限与审计:保障数据安全的基石
  • MCP协议:AI与工具无缝连接的“万能插头“及最佳实践指南
  • MySQL 详解之函数:数据处理与计算的利器
  • SQLMesh 表格对比指南:深入理解 table_diff 工具的实际应用
  • 每日两道leetcode(补充一)
  • 【FreeRTOS】事件标志组
  • 58、微服务保姆教程(一)
  • 第十一天 主菜单/设置界面 过场动画(Timeline) 成就系统(Steam/本地) 多语言支持
  • HTML 模板技术与服务端渲染
  • 2022李宏毅老师机器学习课程笔记
  • 【尚硅谷Redis6】自用学习笔记
  • 【C++游戏引擎开发】第25篇:方差阴影贴图(VSM,Variance Shadow Maps)
  • 使用Python脚本在Mac上彻底清除Chrome浏览历史:开发实战与隐私保护指南
  • 申活观察|人潮涌动成常态,豫园为何常来常新?
  • 3:0战胜日本队,中国羽毛球队挺进2025苏迪曼杯决赛
  • 澳大利亚大选今日投票:聚焦生活成本与“特朗普问题”
  • 美国鞋类巨头请求白宫豁免关税,称已构成“生存威胁”
  • 缔造“水饺皇后”的香港,也是被移民塑造的香港
  • 11家券商一季度净利翻番:9家利润超20亿,国泰海通居首