Centos使用密钥登录,既安全又快捷,还免了每次输密码错误的烦恼,下面,我们就来进行吧:
ssh-keygen是产生、管理和转化ssh验证密钥的命令,ssh分为v1和v2版,v1版不建议使用,它有很多弱点漏洞,并且也没有v2的一些高级功能 。
1、客户端生成密钥对,一个私钥,一个公钥,pub后缀的是公钥。一些远程工具也能生成。
# ssh-keygen -t [dsa | ecdsa | ed25519| rsa | rsa1] -b 2048 -f keyname -m keymode
ssh-keygen默认产生v2版本的2048位的rsa密钥对,名为id_rsa和id_rsa.pub,位于~/.ssh下面,如果没有这个目录,你可以建立这个目录,或者用-f 选项来指定文件保存位置。
-p 用于更改密钥的口令
-l keyname 用于查看key的指纹
-b bits 密钥长度(RSA最小值为1024,默认为2048;DSA必须为1024;ECDSA必须 为256|284|512,通过从三个椭圆之一中选择密钥长度
-e 打印(导出)密钥,默认格式为RFC4716,可以用-m指定格式
-V validity_interval 有效时间间隔
-c comment 对于 RSA1 密钥和以较新的 OpenSSH 格式存储的密钥,key 文件可以加入一个注释字段,仅用于帮助用户区别key。 comment可以告诉钥匙是干什么用的,或者什么有用的。comment创建密钥时初始化为“user@host”,但可以用 -C选项更改
-a number 用于指定 KDF(key derivation function)的数量数字越大,则破解难度越高
-z serial_number 指定要嵌入证书中的序列号,cate将此证书与其他证书区分开来相同的CA。默认序列号为零。
2、上传客户端生成的公钥文件,如id_rsa_2048.pub上传到服务端的~/.ssh下面,如果没有此目录,可以自己建。(~是指当前用户的目录环境,目录名前加个 . 的意思是隐藏目录,可以用ll -a显示出来)
3、将公钥文件写入到~/.ssh/authorized_keys 文件里:
cat .ssh/id_rsa_2048.pub >>authorized_keys
给目录和文件加权限加固一下:
chmod 500 ~/.ssh
4、修改配置文件并重启sshd服务:
# vi /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
systemctl restart sshd
5、然后可以连了,查看ssh登录日志:
tail /var/log/secure
Oct 7 20:52:16 localhost sshd[1837]: pam_unix(sshd:session): session opened for user root by (uid=0)
最后,为安全起见,最好禁止root用户直接登录。