码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • ssh-keygen(linux 命令) 创建 private key(私钥) , public key (公钥),实现ssh,scp,sftp命令无密码连接


    ssh-keygen(linux 命令) 创建 private key(私钥) , public key (公钥),实现ssh,scp,sftp命令无密码连接_sun0322的博客-CSDN博客

    目录

    ■相关知识   之   非对称加密

    ■想要达到的效果

    意义1:

    意义2:

    ■连接时  使用到的命令 (在ServerA上执行的命令)

    ■具体操作

    1.首先  生成公钥  和 私钥 

    原理说明

    2.根据以上原理,配置公钥和私钥

    在ServerB中,想登录的用户(user001)的 ./ssh 配置公钥authorized_keys

    3.连接 

     在ServerA中,使用私钥连接 ServerB

    ■补充说明1 :konw_hosts 文件

    作用:

    ■公钥 以及  私钥 的内容

    ■生成公钥 私钥  时,使用到的命令 ssh-keygen 的简单介绍

    ■参考

    40. RAS // ssh-keygen(linux 命令)  // private key(私钥) , public key (公钥)


    ■相关知识   之   非对称加密

    SSH密钥登录使用非对称加密,
    用户通过自己的密钥登录,
    (注意:私钥必须自己保存,不能泄漏,公钥则是公开,可以对外发送保存。)
    公钥和私钥是一对一的关系:只有对应的私钥才能解密对应公钥加密的数据。

    ■想要达到的效果

    ServerA 无密码 访问 ServerB 

    意义1:

    (可无密码使用 ssh,scp等命令,

        不用输入密码,当有连接服务器,文件传输等需求时,可以使用自动化脚本实现)

    意义2:

       不用担心ServerB的用户密码是否发生变更,是要你有私钥,ServerB配置了公钥,你就可以使用公钥访问ServerB中,配置了公钥的用户。

       (注意,下面提到的./ssh 目录,是在用户目录下的./ssh目录。 

            比如配置在root下面, 那么,你就是以root用户登录的。)

         

    ■连接时  使用到的命令 (在ServerA上执行的命令)

    ssh -i /root/.ssh/id_rsa_serverB  user001@serverB

    ===

    scp -i /root/.ssh/id_rsa_serverB  /AAA/BBB/a.txt user001@serverB:/AAA/CCC/a.txt

    ===

    1. sftp -i /root/.ssh/id_rsa_serverB user001@serverB << EOF
    2. mkdir CCC
    3. chmod 755 CCC
    4. mput a.txt /home/user001/CCC/a.txt
    5. chmod 644 /home/user001/CCC/a.txt
    6. bye
    7. EOF

    FTP相关命令(手机FTP服务启动应用)_sun0322的博客-CSDN博客

    ===

    ■具体操作

    1.首先  生成公钥  和 私钥 

    (在ServerA上) ssh-keygen -t rsa 命令生成了一个密钥(私钥)和一个公钥,
    (而且密钥可以设置自己的密码,)

    ==

     ==

    原理说明

    可以把密钥     理解成一把钥匙,   公钥   理解成这把钥匙对应的锁头,


    把锁头(公钥)放到想要控制的serverB上, 锁住serverB, 只有拥有钥匙(密钥)的人, 才能打开锁头, 进入serverB并控制,
     
    而对于拥有这把钥匙的人, 必需得知道钥匙本身的密码,才能使用这把钥匙 (除非这把钥匙没设置密码), 这样就可以防止钥匙被人配了(私钥被人复制)
    (其它serverC,使用ServerA的私钥,同样可以访问ServerB)

    === 

    2.根据以上原理,配置公钥和私钥

    在ServerB中,想登录的用户(user001)的 ./ssh 配置公钥authorized_keys

    要控制的serverB的目录
    在想登录的, 用户的目录下面
    ./ssh
       └authorized_keys   //  允许访问的Server的公钥信息,存放在这里 (比如,存放ServiceA的公钥信息)
       └konw_hosts       // serverB,访问过的其它的server的信息   (■补充说明1中解释)
     

    3.连接 

     在ServerA中,使用私钥连接 ServerB

    1. ===
    2. ■最后, 在本地用ssh命令的 -i 参数指定本地密钥, 并登录:
    3. ssh -i /root/.ssh/id_rsa_serverB user001@serverB
    4. (有多个私钥,或者私钥没有保存在 ./ssh下面时,需要指定私钥的位置)
    5. ===

    ===

    ■补充说明1 :konw_hosts 文件

    作用:

       如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。

    例:AAServer  连接  BBServer

    AA(例子中是本地电脑)通过ssh首次连接到BB(例子中是Linux的虚拟机),BB会将公钥1(host key)传递给AA,

    AA将公钥1存入(登录用户目录下的.ssh文件夹\)known_hosts文件中,

    IP 地址  是  BB(Linux虚拟机)的IP 

    ===

    以后AA再连接BB时,BB依然会传递给AA一个公钥2,

    OpenSSH会核对公钥,通过对比公钥1与公钥2 是否相同来进行简单的验证,

    如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。

    ■公钥 以及  私钥 的内容

    ■生成公钥 私钥  时,使用到的命令 ssh-keygen 的简单介绍

    ssh-keygen -t rsa

    (windows系统中,也有这个命令)
    ====
    -t: (type) 指定密钥的加密算法(一般 ed25519 , rsa),省略默认使用RSA。ssh-keygen -t rsa
    -b: (bits) 指定密钥的二进制位数,数值越大加密解密的开销越大,同时密钥的安全程度越高,一般设置 1024 或者 2048 ssh-keygen -b 1024
    -C: (comment) 指定密钥文件的注释,格式username@host: ssh-keygen -t rsa -b 2048 -C xxx1@email.com 生成
    ====

    1. ssh-keygen [-q] [-b bits] [-C comment] [-f output_keyfile] [-m format]
    2.                 [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa] [-N new_passphrase] [-O option] [-w provider]


     

    ■参考

    工作中使用到的单词(软件开发)_sun0322的博客-CSDN博客

    40. RAS // ssh-keygen(linux 命令)  // private key(私钥) , public key (公钥)

    ===

  • 相关阅读:
    Matlab中的功率谱分析方法与实例分析
    vue路由传参的几种方式
    远程终端工具Xshell、Xftp传输工具、VMware 、CentOS7的下载、安装和使用教程(完整版)
    车载通信架构 —— 传统车内通信网络发展回顾
    “开学福利” | 多组学解决方案书籍免费送!
    链表、栈、队列
    掌握webpack
    【python】raise Exception使用方式示例
    2022/09/30 echarts 简单绘图 折线图
    Docker部署系列之Docker Compose安装Redis三主三从集群
  • 原文地址:https://blog.csdn.net/sxzlc/article/details/126356471
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号