Linux SCP传输文件免密配置

文章目录

  • Linux SCP传输文件免密配置
    • 生成SSH密钥对
    • 将公钥复制到远程服务器
    • 测试SSH连接
    • 使用SCP免密传输文件
    • 可选配置
    • 带密码的秘钥连接处理
      • 使用 `ssh-agent`进行缓存管理(该方式只能确保同一个回话中,多次传输只输一次密码)
      • 使用 `keychain`(长期缓存 `passphrase`)
    • 注意事项

Linux SCP传输文件免密配置

要在Linux系统之间使用SCP传输文件而不需要每次输入密码,可以通过SSH密钥认证来实现。以下是配置步骤:

生成SSH密钥对

秘钥默认存储/生成目录位置在家目录~/.ssh

在本地机器上执行:

  • rsa算法加密
ssh-keygen -t rsa -b 4096 -C "$(whoami)@$(hostname)-$(date +%Y%m%d)"
  • ed25519算法加密
ssh-keygen -t ed25519 -C "$(whoami)@$(hostname)-$(date +%Y%m%d)"

按提示操作(可以直接按回车使用默认设置,不设置密码短语以实现完全免密)。
在这里插入图片描述

将公钥复制到远程服务器

方法一:使用ssh-copy-id命令(最简单)

ssh-copy-id username@remote_host

在这里插入图片描述

方法二:手动复制(如果没有ssh-copy-id命令)

cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

在这里插入图片描述

测试SSH连接

ssh username@remote_host

如果配置正确,应该可以直接登录而不需要输入密码。

在这里插入图片描述

使用SCP免密传输文件

现在可以使用SCP命令而不需要输入密码:

# 上传文件到远程服务器
scp local_file username@remote_host:remote_directory# 从远程服务器下载文件
scp username@remote_host:remote_file local_directory

在这里插入图片描述

可选配置

  1. ~/.ssh/config中配置别名
    编辑或创建~/.ssh/config文件(可配置多个连接):
Host myserver1HostName remote_hostUser username  # 连接的用户账号IdentityFile ~/.ssh/id_rsa # 本机的私钥
Host myserver2HostName remote_host·User username1Port 22 # 默认是22,如果不是需要配置Port参数IdentityFile ~/.ssh/other_id_rsa # 附件

然后可以使用简化的命令:

scp local_file myserver:remote_directory

在这里插入图片描述

  1. 禁用远程服务器的密码认证(增强安全性)
    在远程服务器的/etc/ssh/sshd_config中设置:
PasswordAuthentication no

然后重启SSH服务:

sudo systemctl restart sshd

带密码的秘钥连接处理

使用 ssh-agent进行缓存管理(该方式只能确保同一个回话中,多次传输只输一次密码)

如果你想避免每次都输入密钥的密码,你可以使用 ssh-agent 来缓存密钥的密码。这样,你只需要在第一次使用时输入密码,之后 ssh-agent 会自动处理密码。

使用 ssh-agent 来缓存密钥密码:

  • 启动 ssh-agent

在命令行中执行以下命令来启动 ssh-agent:

eval "$(ssh-agent -s)"

该命令会启动 ssh-agent 进程并设置一些环境变量。

  • 添加私钥到 ssh-agent

使用 ssh-add 命令将你的私钥添加到 ssh-agen。如果你使用的是 id_ed25519 作为私钥,可以执行:

ssh-add ~/.ssh/id_ed25519

然后,它会提示你输入密钥的密码一次。输入后,ssh-agent 会记住这个密码,并在你之后使用密钥时自动提供。

  • 验证是否成功:

你可以通过以下命令确认密钥是否已经被加载到ssh-agent

ssh-add -l

如果成功,你应该看到已加载的密钥信息。

  • 使用 ssh-agent 配合 ssh-copy-id:
    如果你已经将密钥添加到 ssh-agent 中,那么在以后使用 ssh 或 ssh-copy-id 连接远程服务器时,就不需要再次输入密钥密码了。

在这里插入图片描述

  • 自动启动 ssh-agent(可选):
    为了避免每次打开终端时手动启动 ssh-agent,你可以将启动命令添加到你的 shell 配置文件中(例如 .bashrc 或 .zshrc)。
# Add this to ~/.bashrc or ~/.zshrc
eval "$(ssh-agent -s)"

然后,重新加载配置文件:

source ~/.bashrc  # 或者 source ~/.zshrc

使用 keychain(长期缓存 passphrase

keychain 可以跨终端会话缓存 passphrase,适合长期免密登录。

  • 安装 keychain
sudo apt install keychain  # Debian/Ubuntu
sudo yum install keychain  # CentOS/RHEL
  • 配置 ~/.bashrc ~/.zshrc
eval "$(keychain --eval --agents ssh id_ed25519)"

下次登录时会要求输入一次 passphrase,之后所有终端会话均可免密使用。
在这里插入图片描述

注意事项

  • 确保远程服务器的.ssh目录权限为700authorized_keys文件权限为600

  • 如果使用非标准SSH端口,SCP命令需要指定端口:scp -P port_number ...

  • 出于安全考虑,生产环境中建议为密钥设置密码短语,然后使用ssh-agent管理密钥

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字电子技术基础(三十六)——利用Multisim软件实现3线-8线译码器

目录 1 手动方式实现3线-8线译码器 2 使用字选择器实现3线-8线译码器 现在尝试利用Multisim软件来实现3线-8线译码器。本实验目的是验证74LS138的基本功能,简单来说就是“N中选1”。 实验设计: (1)使能信号:时&am…

wait和notify : 避免线程饿死(以及votile内存可见性和指令重排序问题)

各位看官,大家早安午安晚安呀~~~ 如果您觉得这篇文章对您有帮助的话 欢迎您一键三连,小编尽全力做到更好 欢迎您分享给更多人哦 今天我们来学习:wait和notify : 避免线程饿死(以及votile内存可见性和指令重排序问题) …

HarmonyOS 介绍

HarmonyOS简介 随着万物互联时代的开启,应用的设备底座将从几十亿手机扩展到数百亿IoT设备。全新的全场景设备体验,正深入改变消费者的使用习惯。 同时应用开发者也面临设备底座从手机单设备到全场景多设备的转变,全场景多设备的全新底座&am…

【视觉提示学习】3.28阅读随想

2109.01134 CoOp通过可学习的向量来建模提示的上下文词汇,这些向量可以用随机值或预训练的词嵌入进行初始化(见图2)。我们提供了两种实现方式,以处理不同性质的任务:一种是基于统一上下文(unified context…

计算机求职面试中高频出现的经典题目分类整理

以下为计算机求职面试中高频出现的经典题目分类整理,涵盖技术核心与深度考察方向,答案要点已附解析思路: 一、数据结构与算法 链表操作 题目:反转链表(迭代/递归实现)考察点:指针操作、递归思维…

uniapp选择文件使用formData格式提交数据

1. Vue实现 在vue项目中,我们有个文件,和一些其他字段数据需要提交的时候,我们都是使用axios 设置请求头中的Content-Type: multipart/form-data,然后new FormData的方式来进行提交。方式如下: const sendRequest = () => {const formData = new FormData()formData…

BeanDefinition和Beanfactory实现一个简单的bean容器

目录 什么是 Springbean 容器 设计思路 图解 参考文章 开源地址 BeanDefinition 类 BeanFactory 类 测试类 什么是 Springbean 容器 Spring 包含并管理应用对象的配置和生命周期,在这个意义上它是一种用于承载对象的容器,你可以配置你的每个 Bea…

AI Agent开发大全第十四课-零售智能导购智能体的RAG开发理论部分

开篇 经过前面的一些课程,我们手上已经积累了各种LLM的API调用、向量库的建立和使用、embedding算法的意义和基本使用。 这已经为我们具备了开发一个基本的问答类RAG的开发必需要素了。下面我们会来讲一个基本问答类场景的RAG,零售中的“智能导购”场景。 智能导购 大家先…

向字符串添加空格

给你一个下标从 0 开始的字符串 s ,以及一个下标从 0 开始的整数数组 spaces 。 数组 spaces 描述原字符串中需要添加空格的下标。每个空格都应该插入到给定索引处的字符值 之前 。 例如,s "EnjoyYourCoffee" 且 spaces [5, 9] &#xff0…

百人会上的蔚小理与「来的刚刚好」的雷军

这就是2025百人会上的蔚小理,努力的李斌、宣扬飞行汽车的何小鹏与大讲开源的李想。那么小米汽车的模式是什么呢?站在蔚小理的肩上。 这就是2025百人会上的蔚小理,努力的李斌、宣扬飞行汽车的何小鹏与大讲开源的李想。那么小米汽车的模式是什么…

解锁Nginx路由器匹配规则

引言 Nginx 无疑是一款备受瞩目的明星产品。它以其高性能、高可靠性以及出色的并发处理能力,在众多 Web 服务器和反向代理服务器中脱颖而出 ,广泛应用于各类网站和应用程序中。据统计,超过 30% 的网站都在使用 Nginx 作为其 Web 服务器&…

传统策略梯度方法的弊端与PPO的改进:稳定性与样本效率的提升

为什么传统策略梯度方法(如REINFORCE算法)在训练过程中存在不稳定性和样本效率低下的问题 1. 传统策略梯度方法的基本公式 传统策略梯度方法的目标是最大化累积奖励的期望值。具体来说,优化目标可以表示为: max ⁡ θ J ( θ )…

Qwt入门

Qwt(Qt Widgets for Technical Applications)是一个用于科学、工程和技术应用的 Qt 控件库,提供曲线图、仪表盘、刻度尺等专业可视化组件。 1. 安装与配置 1.1 安装方式 源码编译(推荐): git clone https://github.com/qwt/qwt.git cd qwt qmake qwt.pro # 生成 Makef…

软考《信息系统运行管理员》- 6.1 信息系统安全概述

信息系统安全的概念 信息系统安全是指保障计算机及其相关设备、设施(含网络)的安全,运行环境的安全, 信息的安全,实现信息系统的正常运行。 信息系统安全包括实体安全、运行安全、信息安全和 人员安全等几个部分。 影响信息系统安全的因素…

Canvas实现旋转太极八卦图

Canvas实现旋转太极八卦图 项目简介 这是一个使用HTML5 Canvas技术实现的动态太极八卦图,包含了旋转动画和鼠标交互功能。项目展示了中国传统文化元素与现代Web技术的结合。 主要特点 动态旋转的太极图八卦符号的完整展示鼠标悬停暂停动画流畅的动画效果 技术实…

机器学习、深度学习和神经网络

机器学习、深度学习和神经网络 术语及相关概念 在深入了解人工智能(AI)的工作原理以及它的各种应用之前,让我们先区分一下与AI密切相关的一些术语和概念:人工智能、机器学习、深度学习和神经网络。这些术语有时会被交替使用&#…

打造高性能中文RAG系统:多轮对话与语义检索的完美结合

目录 1、引言 2、RAG系统的核心架构 3、对话理解:超越单轮问答 3.1、指代消解技术 3.2、话题跟踪与记忆 4、混合检索策略:兼顾精确与广泛 4.1、向量检索 关键词检索 4.2、重排序机制 5、性能优化:应对大规模文档 5.1、向量量化技术…

人工智能助力数字化转型:生成式人工智能(GAI)认证开启新篇章

在数字化浪潮席卷全球的今天,企业正面临着前所未有的转型压力与机遇。数字化转型,这一曾经被视为“选择题”的战略议题,如今已演变为关乎企业生存与发展的“必答题”。在这场深刻的变革中,人工智能(AI)作为…

Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(十二)

DxgkDdiQueryAdapterInfo 更新 DXGKARG_QUERYADAPTERINFO 结构已更新,以包括以下字段以支持半虚拟化: 添加了 Flags 成员,允许 Dxgkrnl 指示以下内容: 它将 VirtualMachineData 设置为指示调用来自 VM。它将 SecureVirtualMach…

iOS审核被拒:Missing privacy manifest 第三方库添加隐私声明文件

问题: iOS提交APP审核被拒,苹果开发者网页显示二进制错误,收到的邮件显示的详细信息如下图: 分析: 从上面信息能看出第三方SDK库必须要包含一个隐私文件,去第三方库更新版本。 几经查询资料得知,苹果在…