SSH免密登录的配置

ssh登录

登录ssh一般情况有两种方法

  • 密码登录
  • 秘钥登录(免密)

大部分情况我们选择都是输入密码登录,平常使用暂时没有遇到什么问题。最近我编写了一些使用scp来传输文件的脚本,每一次scp都需要输入密码,甚是麻烦。又或者是服务器集群需要多台服务器的通信等,这个时候免密登录就至关重要了。

基本原理

免密登录的原理大概了解一下就可以啦,Client即需要免密登录的客户端,Server表示被免密登录的服务器,本文后续也以此命名。

Client生成密钥对并将公钥发给Server,Server将公钥保存;
Client要登录Server时,Server生成随机字符串并用Client的公钥加密后,发给Client;
Client用私钥将其解密后发回给Server,验证成功后登录。

在Server的秘钥文档~/.ssh/authorized_keys有Client的公钥文件id_

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

在完成ssh-keygen后私钥和公钥文件生成在~/.ssh中(Windows在C:\Users\用户名.ssh中)。

  • 私钥:id_
  • id_rsa、id_dsa、id_ed25519、id_ecdsa
  • 公钥:id_
  • id_rsa.pub、id_dsa.pub、id_ed25519.pub、id_ecdsa.pub

Server授权

Client生成的公钥,我们需要追加在Server的文件~.ssh/authorized_keys末尾。免密登录,可以存放多条。

可以使用ftp、sftp(scp命令)、http(wget、curl)等多种方法将Client公钥追加在Server授权authorized_keys文件中。也可以直接使用ssh-copy-id。

在Client执行ssh-copy-id

ssh-copy-id root@192.168.2.159 -p 22

只要把Client的公钥追加到Sever的authorized_keys就可以了,哪怕你ssh连接进去vim authorized_keys粘贴效果也一样的。

对了随便说一下,know_hosts : 已知的主机公钥清单

请注意权限问题:

  • ssh目录的权限必须是700(即rwx——)
chmod 700 ~/.ssh
  • .ssh/authorized_keys文件权限必须是600(即rw——)
chmod 600 ~/.ssh/authorized_keys
  • 将sshd服务重新启动一下,退出登录,发现已经生效了,不需要输入密码登录。
systemctl restart sshd.service

命令总结

#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

Original: https://www.cnblogs.com/alittlemc/p/16635607.html
Author: alittlemc
Title: SSH免密登录的配置

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/578149/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球