ssh登录
登录ssh一般情况有两种方法- 密码登录
- 秘钥登录(免密)
![0](/i/l/?n=22&i=blog/2928139/202208/2928139-20220829130214000-822937180.png)
基本原理
免密登录的原理大概了解一下就可以啦,Client即需要免密登录的客户端,Server表示被免密登录的服务器,本文后续也以此命名。Client生成密钥对并将公钥发给Server,Server将公钥保存; Client要登录Server时,Server生成随机字符串并用Client的公钥加密后,发给Client; Client用私钥将其解密后发回给Server,验证成功后登录。在Server的秘钥文档~/.ssh/authorized_keys有Client的公钥文件id_<加密算法>.pub的条目,这个时候Client可以免密登录上Server了。图中以rsa为例。
![0](/i/l/?n=22&i=blog/2928139/202208/2928139-20220829130213953-1666917547.png)
Client秘钥
在Client生成公钥和私钥,只需要:ssh-keygen后面一直按回车就可以啦
当然ssh-keygen也有一些参数可选
- -t 选择密钥类型,可选dsa、ecdsa、ed25519、rsa(默认)
- -b 指定生成的密钥的大小,单位字节Byte
- -C 生成密钥的描述信息,默认内容是user@hostname。(会追加到公钥.pub 内容的末尾)
- -f 选择文件输出名字或路径
- -N 指定新密码,'' 表示密码为空
- -q 快速生成,不而外显示内容在终端
ssh-keygen -t ed25519 -b 2048
![0](/i/l/?n=22&i=blog/2928139/202208/2928139-20220829130213923-168940370.png)
- 私钥:id_ <加密算法>
- id_rsa、id_dsa、id_ed25519、id_ecdsa
- 公钥:id_<加密算法>.pub
- id_rsa.pub、id_dsa.pub、id_ed25519.pub、id_ecdsa.pub
![0](/i/l/?n=22&i=blog/2928139/202208/2928139-20220829130213877-686368781.png)
Server授权
Client生成的公钥,我们需要追加在Server的文件~.ssh/authorized_keys末尾。免密登录,可以存放多条。 可以使用ftp、sftp(scp命令)、http(wget、curl)等多种方法将Client公钥追加在Server授权authorized_keys文件中。也可以直接使用ssh-copy-id。 在Client执行ssh-copy-id <sever的ip>ssh-copy-id [email protected] -p 22
![0](/i/l/?n=22&i=blog/2928139/202208/2928139-20220829130213989-1121922671.png)
![0](/i/l/?n=22&i=blog/2928139/202208/2928139-20220829130213985-1339917311.png)
请注意权限问题:
- ssh目录的权限必须是700(即rwx------)
chmod 700 ~/.ssh
![0](/i/l/?n=22&i=blog/2928139/202208/2928139-20220829130213947-864412176.png)
- .ssh/authorized_keys文件权限必须是600(即rw------)
chmod 600 ~/.ssh/authorized_keys
![0](/i/l/?n=22&i=blog/2928139/202208/2928139-20220829130213878-1810160704.png)
- 将sshd服务重新启动一下,退出登录,发现已经生效了,不需要输入密码登录。
systemctl restart sshd.service
![0](/i/l/?n=22&i=blog/2928139/202208/2928139-20220829130213945-2015862331.png)
命令总结
#Client中 ssh-keygen -t [dsa|ecdsa|ed25519|rsa] -d 2048 ssh-ssh-copy-id root@ip -p 22
#Sever中 chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys systemctl restart sshd.service标签:免密,登录,公钥,Client,SSH,Server,id,ssh From: https://www.cnblogs.com/alittlemc/p/16635607.html