操作系统环境: CentOS Linux release 7.7.1908 (Core)
1、首先在linux服务器上,使用ssh-keygen命令生成密钥对文件(一直回车即可,默认使用rsa算法),如下所示
其中还支持的算法有dsa | ecdsa | ed25519 | rsa | rsa1,使用其他算法只需要使用-t选项指定即可
(The possible values are "rsa1" for protocol version 1 and "dsa", "ecdsa", "ed25519", or "rsa" for protocol version 2.)
[root@webserver ~]# ssh-keygen # 也可以使用ssh-keygen -f /root/.ssh/id_rsa -P '' 非交互式生成密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:1v4uvRWnv6BSInIaRxctOat2woXxHHFyiY0yN2MKH30 root@webserver The key's randomart image is: +---[RSA 2048]----+ | .oBo. | | . = #+E | | o % X | | = B | | o S . . .| | o X + . + | | B + +. .o | | . ...o... | | .++. .o| +----[SHA256]-----+ [root@webserver ~]#
2、如上命令所示,执行完后,会在~/.ssh目录下生成id_rsa(私钥文件)和id_rsa.pub(公钥文件)
3、然后将公钥文件内容,追加到sshd配置文件中AuthorizedKeysFile指令定义的文件,其默认值为.ssh/authorized_keys文件
[root@webserver ~]# cd
[root@webserver ~]# cat .ssh/id_rsa.pub >> .ssh/authorized_keys
4、当然至此,服务器公钥文件即使删除了也是可以的,而私钥则是给客户端使用的,交给客户端后,对服务器本身来说也是非必须的
然后ssh客户端就可以直接使用私钥文件免密码登录服务器了
客户端取得私钥文件后,可以对其重命名,以达到见名知义的效果,如 webserver_id_rsa.pem
对于linux系统的ssh客户端
只需要使用ssh -i 私钥文件 user@host 即可以访问,如下,其中192.168.100.128为上面的webserver:
需要特别注意,私钥文件的权限最好设置为0400,即只允许文件的拥有者有读的权限(当然测试600,700也可以的,不推荐)
如果文件的所属组和其他人有任何权限,使用私钥登录都会登录失败,报错!
[root@client ~]# ssh -i webserver_id_rsa.pem [email protected] Last login: Thu Jun 4 22:16:57 2020 from 192.168.100.89 [root@webserver ~]#
另外有时,也会看到有人不用-i指定密钥也是可以免密登录,这是由于ssh客户端配置文件/etc/ssh/ssh_config,
默认有IdentityFile指令,指定了私钥文件,虽然是注释状态的,却默认包含了这些文件
如# IdentityFile ~/.ssh/identity(还有~/.ssh/id_rsa、~/.ssh/id_dsa、~/.ssh/id_ecdsa、~/.ssh/id_ed25519)
大部分情况是自己生成密钥对,通过ssh-copy-id -i 公钥文件 user@host 传递到远端服务器的~/.ssh/authorized_keys
而此时ssh去连接远程主机时,刚好私钥文件,就是刚生成的~/.ssh/id_rsa,所以就不用特意指定,当然也可能客户端配置明确指定了私钥文件
对于windows系统下的xshell客户端
只需要在登录弹窗的Public Key(U) 处通过浏览选择私钥文件,或者直接导入私钥,以后就可以直接在下拉中可以看到!
特别注意,这里的Public Key(U) 不要根据这个名称,误以为公钥文件,始终记住,客户端登录服务器,是使用私钥即可!
putty客户端
对于putty客户端来讲,不能直接使用pem格式的私钥文件(.pem属于OpenSSH格式的密钥)
需要先使用puttygen.exe小程序将pem格式的私钥文件,转换成putty所能识别的.ppk格式(PuTTY Private Key)
尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/13047171.html