SSH密钥认证:实现远程服务器免密登录的两种方法|Linux scp命令详解:高效实现文件与目录的远程传输

简介: 服务器之间经常需要有一些跨服务器的操作,此时就需要我们在一台服务器上登录到另外一台服务器,若是人为操作时我们都可以每次输入密码进行远程登录,但要是程序需要跨服务器时,每次输入密码就不现实了,所以我们需要免密登录

服务器之间经常需要有一些跨服务器的操作,此时就需要我们在一台服务器上登录到另外一台服务器,若是人为操作时我们都可以每次输入密码进行远程登录,但要是程序需要跨服务器时,每次输入密码就不现实了,所以我们需要免密登录

SSH远程登录

1.1 .ssh远程登录操作

这里先看看正常使用 ssh 连接]其他服务器的操作。准备了两台服务器 ip 分别为:192.168.150.175、192.168.150.148。这里使用 175 登录 148。

  1. 先 ping 测试下看看网络是否通畅

可以看到网络正常,可以 ping 通
在这里插入图片描述

  1. ssh 192.168.150.148

然后操作 ssh 开始登录,此时就需要我们输入密码了,这个密码就是我们服务器 root 的密码了。

注意:若是第一次登录这台服务器会弹出一个问题:问你是否需要继续连接此服务器,输入 yes 即可。

在这里插入图片描述

正常输入密码后即可实现 ssh 登录了。

ssh 登录这样就算 ok 了,但其实我们还是比较关心如何免密进行 ssh 登录。

1.2.ssh免密登录方式一

其实很简单,只需要三步即可:

  1. 生成公钥、私钥
ssh-keygen

执行该命令然后对于弹出提示直接三次回车即可。这个命令本质上就是生成公钥和私钥的。我们也无需为他们制定特殊的存放位置回车就是都用默认的即可。通过下面的图可以看出,公钥在 / root/.ssh/id_rsa.pub,私钥在 / root/.ssh/id_rsa

在这里插入图片描述

  1. 拷贝公钥到目标服务器

ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.150.148

使用这个命令可以把本机的公钥 copy 到 192.168.150.148 上,命令有点类似 scp,所以这里也是需要输入密码的

在这里插入图片描述

  1. 测试 ssh 免密登录

如下图我们可以看到,无需输入密码,直接 ssh 就成功了

在这里插入图片描述

认真看过第二种方式就会知道,第二种方式必须要知道服务器的密码,而且还是 root 密码,这个在工作中可能有点难度,所以我们真正使用这个方式比较靠谱吧。

1.3.ssh免密登录方式二(推荐)

1. 生成本机的公钥私钥

ssh-keygen

这个与方式一里面的的第一步没有任何区别,执行下面的命令三次回车即可

  1. 打开本地公钥文件复制公钥信息
vim /root/.ssh/id_rsa.pub
# 复制公钥信息,下面是笔者的公钥信息
ssh-rsa AAAAB3xxxxx2mz3zEOo39w03RjzFWIhqbxxxxxxxxxxxxxxxxxx root@bogon

  1. 将公钥存放到目标服务器的这个文件里:/root/.ssh/authorized_keys

什么?没有这个文件,那就在本地执行下下面这个命令

ssh localhost

这样本地就会产生这个文件了,然后我们将 2 里面拿到的公钥存放进来即可,注意若是该文件不为空,就换行新增本次的公钥就行,不要去覆盖别的公钥,不然会造成其他服务器登录这台服务器时免密失败。

  1. 测试免密登录

其实两种方式本质上没有区别,都是将公钥放到目标服务器上即可,一种采用 scp 的方式,一种是直接登录服务器放到对应文件里即可。

在这里插入图片描述

2. Linux scp命令实现文件互传

  • Linux scp 命令用于 Linux 之间复制文件和目录。

  • scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

  • scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

2.1 语法

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2

简易写法:

scp [可选参数] file_source file_target 

参数说明:

  • -1: 强制 scp 命令使用协议 ssh1
  • -2: 强制 scp 命令使用协议 ssh2
  • -4: 强制 scp 命令只使用 IPv4 寻址
  • -6: 强制 scp 命令只使用 IPv6 寻址
  • -B: 使用批处理模式(传输过程中不询问传输口令或短语)
  • -C: 允许压缩。(将 - C 标志传递给 ssh,从而打开压缩功能)
  • -p:保留原文件的修改时间,访问时间和访问权限。
  • -q: 不显示传输进度条。
  • -r: 递归复制整个目录。
  • -v:详细方式显示输出。scp 和 ssh(1) 会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
  • -c cipher: 以 cipher 将数据传输进行加密,这个选项将直接传递给 ssh。
  • -F ssh_config: 指定一个替代的 ssh 配置文件,此参数直接传递给 ssh。
  • -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给 ssh。
  • -l limit: 限定用户所能使用的带宽,以 Kbit/s 为单位。
  • -o ssh_option: 如果习惯于使用 ssh_config(5) 中的参数传递方式,
  • -P port:注意是大写的 P, port 是指定数据传输用到的端口号
  • -S program: 指定加密传输时所使用的程序。此程序必须能够理解 ssh(1) 的选项。

2.2 实例

2.2.1、从本地复制到远程

命令格式:

scp local_file remote_username@remote_ip:remote_folder 
或者 
scp local_file remote_username@remote_ip:remote_file 
或者 
scp local_file remote_ip:remote_folder 
或者 
scp local_file remote_ip:remote_file 

root@目标服务器ip

  • 第 1,2 个指定了用户名,命令执行后需要再输入密码,第 1 个仅指定了远程的目录,文件名字不变,第 2 个指定了文件名;
  • 第 3,4 个没有指定用户名,命令执行后需要输入用户名和密码,第 3 个仅指定了远程的目录,文件名字不变,第 4 个指定了文件名;

应用实例

scp /home/space/music/1.mp3 root@ip地址:/home/root/others/music 
scp /home/space/music/1.mp3 root@10.80.1.253:/home/root/others/music/001.mp3 
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music 
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music/001.mp3 

在这里插入图片描述
在这里插入图片描述

复制目录命令格式

scp -r local_folder remote_username@remote_ip:remote_folder 
或者 
scp -r local_folder remote_ip:remote_folder 

  • 第 1 个指定了用户名,命令执行后需要再输入密码;
  • 第 2 个没有指定用户名,命令执行后需要输入用户名和密码;

应用实例:

scp -r /home/space/music/ root@www.runoob.com:/home/root/others/ 
scp -r /home/space/music/ www.runoob.com:/home/root/others/ 

上面命令将本地 music 目录复制到远程 others 目录下。

#进入 对应目录
scp -r mnt root@10.80.1.252:/www/algorithm/old_code

2.2.2、从远程复制到本地

从远程复制到本地,只要将从本地复制到远程的命令的后 2 个参数调换顺序即可,如下实例

应用实例:

scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3 
scp -r www.runoob.com:/home/root/others/ /home/space/music/

2.3 说明

  1. 如果远程服务器防火墙有为 scp 命令设置了指定的端口,我们需要使用 -P 参数来设置命令的端口号,命令格式如下:
#scp 命令使用端口号 4588
scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator

  1. 使用 scp 命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则 scp 命令是无法起作用的。
  • 参考链接
    • https://www.runoob.com/linux/linux-comm-scp.html
    • https://developer.aliyun.com/article/1132156#slide-7

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java 开发实例:Spring Boot+AOP+注解+Redis防重复提交(防抖)

文章目录 1. 环境准备2. 引入依赖3. 配置Redis4. 创建防重复提交注解5. 实现AOP切面6. 创建示例Controller7. 测试8. 进一步优化8.1 自定义异常处理8.2 提升Redis的健壮性 9. 总结 🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨…

基于单片机的数控稳压开关电源研究

为了解决多种类供电的电压需求,克服供电电路体积大、性价比低的问题,复杂电路系统以单片机控制为核心,尝试构建单片机数控开关稳压电源的硬件平台,并开发软件程序,实现系统多种类供电电压输出的控制。实验证明&#xf…

zabbix老版本3.0.14迁移

由于之前zabbix版本过老,一直未能升级,现在一台老的服务器需要迁移,服务器较老,就不更新,先迁移数据, 下载地址: Zabbix Official Repository http://repo.zabbix.com/zabbix/3.0/rhel/7/x86…

「实战应用」如何用DHTMLX将上下文菜单集成到JavaScript甘特图中(一)

DHTMLX Gantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。 DHTMLX Gantt是一个高度可定制的工具,可以与项目管理应用程序所需的其他功能相补充。在本文中您将学习如何使用自定义上…

如何使用Spring Boot框架整合Redis:超详细案例教程

目录 # 为什么选择Spring Boot与Redis整合? 1. 更新 pom.xml 2. 配置application.yml 3. 创建 Redis 配置类 4. Redis 操作类 5. 创建控制器 6. 启动应用程序 7. 测试 # 为什么选择Spring Boot与Redis整合? 将Spring Boot与Redis整合可以充分利…

自制一个Linux live固件镜像ISO可引导系统

使用母盘镜像制作两个虚拟,来制作一个包含基本需求的filesystem.squashfs文件,具体看下面的链接 使用的安装镜像 是Linux Mint 制作好的成品 https://cloud.189.cn/t/U32Mvi7FnyA3 (访问码:2nbo) 最简单制作LIVE CD…

java多线程概念

在Java多线程编程中有几个重要的概念,这些概念对于理解和编写正确的多线程应用程序至关重要: 1.线程(Thread): 线程是操作系统能够进行运算调度的最小单位,Java通过线程实现并发执行。 2.进程(Process&…

12_YouOnlyLookOnce(YOLOv3)新一代实时目标检测技术

1.1 回顾V1和V2 V1:05_YouOnlyLookOnce(YOLOV1)目标检测领域的革命性突破-CSDN博客 V2:07_YouOnlyLookOnce(YOLOv2)Better,Faster,Stronger-CSDN博客 1.2 简介 YOLOv3(You Only Look Once version 3)是…

【odoo】odoo中对子数据的独有操作[(0, 0, {‘name‘: ‘demo‘})]

概要 在Odoo中,有种写法用于操作 one2many 或 many2many 字段时,描述如何在数据库中创建、更新或删除相关记录。具体而言,这是一种命令格式,被称为 "commands" 或 "special command tuples",用于 …

[大模型]Qwen2-7B-Instruct vLLM 部署调用

vLLM 简介 vLLM 框架是一个高效的大语言模型推理和部署服务系统,具备以下特性: 高效的内存管理:通过 PagedAttention 算法,vLLM 实现了对 KV 缓存的高效管理,减少了内存浪费,优化了模型的运行效率。高吞吐…

Nginx负载均衡之长连接负载均衡

当客户端通过浏览器访问 HTTP 服务器时,HTTP 请求会通过 TCP 协议与 HTTP 服务器建立一条访问通道,当本次访问数据传输完毕后,该 TCP 连接会立即被断开,由于这个连接存在的时间很短,所以 HTTP 连接也被称为短连接。 …

五、特征缩放和多项式回归

目录 一、为什么要使用特征缩放(Feature Scaling) 1.首先来看预测房价的例子 2.特征缩放前后效果对比 二、特征缩放方法 1.统一除以范围最大值 2.均值归一化(Mean Normalization) 3.Z-score标准化(Z-score Normalization) 4.一些可以接受/不接受的缩放范围 三、如何识别…

使用docker构建自己的镜像并推送到远程镜像仓库

这里镜像仓库使用阿里云仓库,其他仓库可能类似,可以参考,个人实例可以免费使用。 背景 遇到的问题:需要定制一个自己的镜像,在上面安装一些环境,然后将镜像托管到公共镜像仓库,在其他地方使用…

14.基于人类反馈的强化学习(RLHF)技术详解

基于人类反馈的强化学习(RLHF)技术详解 RLHF 技术拆解 RLHF 是一项涉及多个模型和不同训练阶段的复杂概念,我们按三个步骤分解: 预训练一个语言模型 (LM) ;训练一个奖励模型 (Reward Model,RM) &#xf…

理解Es的DSL语法(一):查询

目录 DSL相关联的基本概念 ElasticSearch的字段类型 ElasticSearch的查询类型 DSL语法 query 普通查询 布尔查询 字符串构建查询 _source from和size sort 关于sort和查询的相关性评分 关于sort的性能 DSL相关联的基本概念 Es的DSL并不是独立的知识点&#xff…

Postman接口测试/接口自动化实战教程

一、API 自动化测试 Postman 最基本的功能用来重放请求,并且配合良好的 response 格式化工具。 高级点的用法可以使用 Postman 生成各个语言的脚本,还可以抓包,认证,传输文件。 仅仅做到这些还不能够满足一个系统的开发&#x…

【SQLAlChemy】表之间的关系,外键如何使用?

表之间的关系 数据库表之间的关系分为三种: 一对一关系(One-to-One):在这种关系中,表A的每一行都与表B的一行关联,反之亦然。例如,每个人都有一个唯一的社保号,每个社保号也只属于…

基于MCU平台的HMI开发的性能优化与实战(上)

随着汽车座舱智能化的不断演进,车内显示设备的数量显著增加,从传统的仪表盘和中控屏扩展至空调控制、扶手、副驾驶区域以及抬头显示(HUD)等多样化的显示单元。为了有效支持这些功能单元,同时控制整车成本,越…

59.指向指针的指针(二级指针)

目录 一.什么是指向指针的指针 二.扩展 三.视频教程 一.什么是指向指针的指针 我们先看回顾一下指针&#xff1a; #include <stdio.h>int main(void) {int a 100;int *p &a;printf("*p is %d\n",*p);return 0;} 解析&#xff1a; 所以printf输出的结…

最长连续序列

题目&#xff1a;最长连续序列 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 解题思路&#xff1a; 思路一:先排序&#xff0c;然…