通过使用ssh keys我们可以免密登录Linux(且推荐这么使用),这样以后ssh到Linux的时候就不需要每次填写密码了。

生成密钥对

  • 可以在任何地方生成,客户端,服务器,第三方,甚至在Vaultwarden方便管理,只要保证不要随意泄露即可,Windows / Mac / Linux可以输入命令

    ssh-keygen
    
  • 一般会生成在C:\Users\Username\.ssh\,而且都是成对生成的,会有一个公钥id_rsa.pub或者id_ed25519.pub和一个私钥

Server

  • Server端需要保留公钥,Client端保留私钥(不能泄露)

  • 在Linux中查看是否有.ssh目录,如果没有则新建

    cd ~
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    
  • 将公钥上传到Linux,也可以直接复制粘贴

    cd C:\Users\Username\.ssh\
    scp .\id_rsa.pub username@address:~/.ssh
    scp .\id_ed25519.pub username@address:~/.ssh
    
  • 在Linux中查看是否有authorized_keys文件,如果没有则新建

    cd ~/.ssh
    touch authorized_keys
    chmod 600 ./authorized_keys
    cat id_rsa.pub >> ./authorized_keys
    cat id_ed25519.pub >> ./authorized_keys
    
  • 添加完之后就可以将公钥删除了

    cd ~/.ssh
    rm id_rsa.pub
    rm id_ed25519.pub
    

Client

  • Client端可以在config文件指定密钥对,Windows在C:\Users\Username\.ssh\config

    Host host1												# Server主机名
      HostName hostname1 									# Server的IP地址或者URL
      User admin											# USer
      IdentityFile "C:\Users\Username\.ssh\id_ed25519"		# 本机私钥地址
    Host host2
      HostName hostname2
      User admin
      IdentityFile "C:\Users\Username\.ssh\id_pem"
    
  • 如果没指定,默认使用id_ed25519的私钥,且一个id_ed25519文件只能存一个私钥

配置完成后就可以免密码登录Linux了。