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

    ===

  • 相关阅读:
    Linux操作系统——类UNIX系统
    资源道具化
    TCP 协议有哪些缺陷?
    springboot项目做成公共项目
    自制操作系统日记(7):字符串显示
    【TWVRP】基于matlab鲸鱼算法求解带时间窗开放式车辆路径问题【含Matlab源码 1986期】
    Codeforces Round 953 (Div. 2)(A~D题解)
    商城免费搭建之java商城 开源java电子商务Spring Cloud+Spring Boot+mybatis+MQ+VR全景+b2b2c
    Vue+ElementUI+Bootstrap+Fetch实现学生信息修改页面,并与后端交互修改数据库信息
    day49:QT day2,信号与槽、对话框
  • 原文地址:https://blog.csdn.net/sxzlc/article/details/126356471
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号