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]

主要用到的是-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. 完成之后试一试是否成功。

你可能感兴趣的:(ssh,服务器,vscode)