码农知识堂 - 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 (公钥)

    ===

  • 相关阅读:
    笔记37:全卷积网络FCN结构详解
    Java Swing游戏开发学习24
    快手小程序模板_快手小程序模板平台制作
    架构师思维学习
    淘宝详情API接口
    嵌入式算法19---国家商用密码SM算法
    numpy 最小二乘拟合 一元线性回归与多元线性回归 原理与代码
    linux--进程通信--管道通信
    itertools:Python3迭代库(持续更新ing...)
    [EasyExcel] 导出合并单元格
  • 原文地址:https://blog.csdn.net/sxzlc/article/details/126356471
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号