目标服务器操作

目标服务器生成密钥对

    ## 进入系统的指定目录
    cd ~/.ssh

    ## filename 是公钥和私钥的文件名称
    ## 执行完成后,查看当前目录是否出现两个文件,一个是 .pub结尾的文件,这个是公钥,另外一个是filename名称的文件,这个是私钥
    ssh-keygen -t ed25519 -f ~/.ssh/[filename] -N ""

    ## 把公钥的内容,拷贝到 authorized_keys 文件中
    cat [filename].pub >> authorized_keys

    ## 更改目录和文件的权限
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

查看SSH配置,是否开启密钥登录

    ## 进入系统的指定目录
    cd /etc/ssh

    ## 查看ssh文件配置
    cat sshd_config

    ## 主要看两个配置,一个是是否允许私钥登录,还有一个是是否允许公钥登录root(根据实际情况选择)
    ## PubkeyAuthentication yes      # 是否允许公钥登录系统
    ## PermitRootLogin yes           # 是否允许公钥免密登录系统,并且是root用户

    ## 如果修改了,那么需要重启ssh
    systemctl restart sshd

    # -vvv 参数用于输出极详细的调试日志
    # [filename] 替换为你的私钥文件名
    # user@hostname 替换为目标服务器的用户名和 IP 地址
    ssh -vvv -i ~/.ssh/[filename] user@hostname "echo success"

    ## 【验证标准】
    ## 1. 如果末尾成功输出了 "success",说明配置成功。
    ## 2. 如果连接失败,可在日志中搜索 "Authentication succeeded (publickey)"
    ## 或查看是否有 "Permission denied" 报错,据此排查权限或配置问题。

本机操作

一次性终端有效

    # 1. 启动后台的管家进程
    eval $(ssh-agent -s)

    # 2. 把你的私钥添加给管家(假设你的私钥文件叫 id_rsa)
    ssh-add ~/.ssh/id_rsa

持久化有效

    # 创建或打开配置文件
    vim ~/.ssh/config

    ## 添加如下内容(hostname是连接时的自定义主机名):
    Host myserver
        # 目标服务器的公网 IP 或 域名
        HostName hostname
        # 登录服务器的用户名
        User user
        # 显式指定该服务器使用的私钥绝对路径
        IdentityFile ~/.ssh/[filename]

    ## 验证下,连接成功后,就可以直接操作了
    ssh myserver "echo success"

SCP

配置指南

当配置了持久化有效后,scp也会继承配置。因此scp可以直接使用

    # 1. 上传本地文件到服务器(使用别名 myserver)
    scp ./local_file.txt myserver:/root/

    # 2. 从服务器下载整个文件夹到本地当前目录
    scp -r myserver:/var/www/html/ .