• ssh免密登录远程服务器


    问题

    每次使用vscode连接远程服务器都需要输入密码,切换文件夹也需要输入密码,十分麻烦,于是考虑配置一下免密登录。

    方法

    如果不想了解具体原理,也可以直接跳到步骤。

    ssh-keygen命令用来生成ssh公钥认证所需的公钥和私钥文件。
    ssh秘钥登录特点:

    1. 安全
    2. 免输密码。

    命令解释(在linux机器上使用man ssh-keygen查看文档):

    NAME
         ssh-keygen — OpenSSH authentication key utility
    
    SYNOPSIS
         ssh-keygen [-q] [-b bits] [-C comment] [-f output_keyfile] [-m format]
                    [-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa] [-N new_passphrase]
                    [-O option] [-w provider]
         ssh-keygen -p [-f keyfile] [-m format] [-N new_passphrase] [-P old_passphrase]
         ssh-keygen -i [-f input_keyfile] [-m key_format]
         ssh-keygen -e [-f input_keyfile] [-m key_format]
         ssh-keygen -y [-f input_keyfile]
         ssh-keygen -c [-C comment] [-f keyfile] [-P passphrase]
         ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
         ssh-keygen -B [-f input_keyfile]
         ssh-keygen -D pkcs11
         ssh-keygen -F hostname [-lv] [-f known_hosts_file]
         ssh-keygen -H [-f known_hosts_file]
         ssh-keygen -K [-w provider]
         ssh-keygen -R hostname [-f known_hosts_file]
         ssh-keygen -r hostname [-g] [-f input_keyfile]
         ssh-keygen -M generate [-O option] output_file
         ssh-keygen -M screen [-f input_file] [-O option] output_file
         ssh-keygen -I certificate_identity -s ca_key [-hU] [-D pkcs11_provider] [-n principals]
                    [-O option] [-V validity_interval] [-z serial_number] file ...
         ssh-keygen -L [-f input_keyfile]
         ssh-keygen -A [-f prefix_path]
         ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number] file ...
         ssh-keygen -Q -f krl_file file ...
         ssh-keygen -Y find-principals -s signature_file -f allowed_signers_file
         ssh-keygen -Y check-novalidate -n namespace -s signature_file
         ssh-keygen -Y sign -f key_file -n namespace file ...
         ssh-keygen -Y verify -f allowed_signers_file -I signer_identity -n namespace -s signature_file
                    [-r revocation_file]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    主要用到的是-t-f-C

    参数含义
    -t选择签名的类型,可选的参数为 dsa 、 ecdsa 、 ecdsa-sk 、 ed25519 、 ed25519-sk 、 rsa,最常使用的就是rsa
    -f指定生成的key file的文件名
    -C备注

    ssh-keygen会在用户主目录的.ssh文件夹下(linux的~/.ssh或者windows的C:\Users\用户名\.ssh)生成一个公钥文件和一个私钥文件,使用rsa签名的话私钥默认就是id_rsa文件,公钥默认是id_rsa.pub文件。

    公钥和私钥的区别
    在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。
    公钥私钥的原则

    1. 一个公钥对应一个私钥。
    2. 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
    3. 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
    4. 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。

    理解公钥私钥可以阅读:SSH 公钥 私钥的理解

    步骤

    1. 首先,在自己的主机上使用ssh-keygen -t rsa命令生成私钥和公钥,为了简便,跳出的提示直接回车跳过即可。这样就可以在用户主目录的.ssh文件夹下(linux的~/.ssh或者windows的C:\Users\用户名\.ssh)下找到两个文件。
    2. 其中,.pub的公钥文件是需要给远程服务器的,具体做法是,在远程服务器的.ssh文件夹(~/.ssh文件夹,如果没有的话自己创建一个即可)下创建一个authorized_keys文件,可以在.ssh文件夹下使用touch authorized_keys来创建文件,然后可以使用vim编辑器打开该文件,将第一步得到的公钥(.pub文件中的一行,大致如ssh-rsa xxxxx的形式)复制到该文件中即可。
    3. 完成之后试一试是否成功。
  • 相关阅读:
    竞赛 大数据疫情分析及可视化系统
    突破自动化测试瓶颈!WEB自动化测试鼠标与键盘操作最佳实践分享
    入门篇-其之六-附录一-以Java字节码的角度分析i++和++i
    Qt Creator插件
    不要称之为卷土重来,Java 仍独领风骚
    字节跳动后端面经(19)
    Quartz 的关键接口详解
    lnmp架构之mysql主从复制(二)
    乘坐公交-(贪心算法)
    IEEE802系列协议知识点总结
  • 原文地址:https://blog.csdn.net/weixin_47524903/article/details/128184651