Linux_SSH免密随笔

一、介绍

SSH 为 Secure Shell的缩写,它是建立在应用层基础上的安全协议。
SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

 

SSH远程登录目标服务器有两种方式:

① 基于口令的安全认证: 每次登录的时候都要输入用户名和密码, 由于要在网络上传输密码, 可能存在中间人攻击的风险;
② 基于密钥的安全认证: 配置完成后就可以实现免密登录, 这种方式更加安全 —— 不需要在网络上传递口令, 只需要传输一次公钥. 常见的git的ssh方式就是通过公钥进行认证的.

 

二、配置SSH免密登录

如何实现远程服务器的免密登录?

两个文件: 本地环境的 ~/.ssh/id_rsa.pub 与 远程服务器的 ~/.ssh/authorized_keys
一个动作:把本地文件中的内容复制粘贴到远程服务器中

 

  1. 生成 SSH 密钥对(如果尚未生成):

    • 在本地机器上打开终端。
    • 输入 ssh-keygen 并按回车。
    • 按照提示操作,可以直接按回车使用默认设置。这将在 ~/.ssh/ 目录下生成一对密钥(id_rsaid_rsa.pub)。
      • id_rsa: 生成的私钥文件

      • id_rsa.pub: 生成的公钥文件

      • [wpy@hdsgs etc]$ ssh-keygen
        Generating public/private rsa key pair.
        Enter file in which to save the key (/home/wpy/.ssh/id_rsa): 
        Created directory '/home/wpy/.ssh'.
        Enter passphrase (empty for no passphrase): 
        Enter same passphrase again: 
        Your identification has been saved in /home/wpy/.ssh/id_rsa.
        Your public key has been saved in /home/wpy/.ssh/id_rsa.pub.
        The key fingerprint is:
        SHA256:jtM28ZcfKiGuJRVlhJ1FIK3ym54TBeeNYTyoI6MU8ik wpy@hdsgs
        The key's randomart image is:
        +---[RSA 3072]----+
        |        .B==o    |
        |. .     ++X      |
        | o o   ..* =     |
        |E + o + ..+ .    |
        | o . o +S.       |
        |  .    =+o.  .   |
        |      +.*=..o .  |
        |       ==o.. o . |
        |      .oo. .. .  |
        +----[SHA256]-----+
        [wpy@hdsgs etc]$ 

         一般默认rsa

  2. 将公钥复制到远程服务器:

    • 对于每台远程服务器,使用 ssh-copy-id 命令复制公钥。例如:
      ssh-copy-id user@hostname
    • 这里的 user 是远程服务器的用户名,hostname 是服务器的主机名或IP地址。
    • 第一次连接时,您可能需要输入密码。
    • 目标服务器中会生成authorized_keys: 存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥。
  3. 测试免密登录:

    • 对每台服务器,尝试使用 ssh 登录:
      ssh user@hostname
    • 如果您能够在不输入密码的情况下登录,说明免密登录设置成功。

三、SSH命令

 

四、SSH免密登录原理

1、ssh 客户端向 ssh 服务器端发送连接请求

2、ssh 服务器端发送一个随机的信息

3、ssh 客户端使用本地的私钥对服务器端发送过来的信息进行加密

4、ssh 客户端向服务器端发送加密过后的信息

5、ssh 服务器端使用公钥对该信息进行解密

6、若解密之后的信息和之前发送的信息匹配,则信任客户端,否则不信任。

 

五、SSH免密登录其他事项

 

5.1 为何使用 ssh 10.0.0.1 可以登录?而不用加用户名

5.2 使用shell脚本,进行免密登录远程服务器进行某些操作

5.3 若当前机器A将公钥复制给远程服务器B,则A可免登录B,但B无法免登录A

5.4 禁用密码登录

修改云服务器的 ssh 配置文件:/etc/ssh/ssh_configPasswordAuthentication 设置为 no,禁用密码登录

# 禁用密码登录
Host *
  PasswordAuthentication no

5.5

 

posted @ 2024-01-18 15:31  黑大帅gs  阅读(32)  评论(0编辑  收藏  举报