每次使用vscode连接远程服务器都需要输入密码,切换文件夹也需要输入密码,十分麻烦,于是考虑配置一下免密登录。
如果不想了解具体原理,也可以直接跳到步骤。
ssh-keygen命令用来生成ssh公钥认证所需的公钥和私钥文件。
ssh秘钥登录特点:
命令解释(在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文件。
公钥和私钥的区别:
在现代密码体制中加密和解密是采用不同的密钥(公开密钥),也就是非对称密钥密码系统,每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。
公钥私钥的原则:
- 一个公钥对应一个私钥。
- 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
- 如果用其中一个密钥加密数据,则只有对应的那个密钥才可以解密。
- 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的那个密钥进行的加密。
理解公钥私钥可以阅读:SSH 公钥 私钥的理解
ssh-keygen -t rsa命令生成私钥和公钥,为了简便,跳出的提示直接回车跳过即可。这样就可以在用户主目录的.ssh文件夹下(linux的~/.ssh或者windows的C:\Users\用户名\.ssh)下找到两个文件。~/.ssh文件夹,如果没有的话自己创建一个即可)下创建一个authorized_keys文件,可以在.ssh文件夹下使用touch authorized_keys来创建文件,然后可以使用vim编辑器打开该文件,将第一步得到的公钥(.pub文件中的一行,大致如ssh-rsa xxxxx的形式)复制到该文件中即可。