服务器免密登录

228 阅读2分钟

ssh

ssh 是Secure Shell 的缩写,ssh为建立在应用层基础上的安全协议。专为远程登陆会话和其他网络服务提供的安全性的协议。利用ssh协议可以有效防止远程管理过程中的信息泄露问题。使用ssh登录一般有两种方式,密码登陆和证书登陆。

证书登录

  1. 客户端生成证书:私钥和公钥,然后私钥存放在客户端。为了安全,可以在生成私钥时设置密码。通过密码校验才能解开私钥。
  2. 服务器添加信用公钥:将客户端的公钥,上传到ssh服务器,添加到指定文件中。

客户端

生成私钥(id_rsa)和公钥(id_rsa.pub)存放在.ssh文件目录下。

ssh-keygen -t rsa

服务器

更改ssh配置文件 /etc/ssh/sshd_config

RSAAuthentication yes #启用rsa认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径

重启SSH服务

systemctl restart sshd //重启ssh服务

authorized_keys

为了让两个Linux服务器之间使用ssh不需要用户名和密码。采用了数字签名RSA或者DSA来完成。

假设 A (192.168.20.11)为客户机器,B(192.168.20.33)为目标机;

要达到的目的:

  • A 机器 ssh 登录 B 机器无需输入密码;
  • 加密方式选 rsa|dsa 均可以,默认 dsa。

单向登陆的操作过程(能满足上边的目的):

  1. 登录 A 机器
  2. ssh-keygen -t [rsa|dsa] ,将会生成密钥文件和私钥文件 id_rsa、id_rsa.pub 或 id_dsa、id_dsa.pub
  3. 将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys
  4. 从 A 机器登录 B 机器的目标账户,不再需要密码;(直接运行 # ssh 192.168.20.33)

双向登陆的操作过程:

  1. ssh-keygen 做密码验证可以使在向对方机器上 ssh,scp 不用使用密码。
  2. 两个节点都执行操作:#ssh-keygen -t rsa,然后全部回车,采用默认值。
  3. 这样生成了一对密钥,存放在用户目录的 ~/.ssh 下。

将公钥复制到对方机器的用户目录下,并将其复制到~/.ssh/authorized_keys中(操作命令:#cat id_dsa.pub >> ~/.ssh/authorized_keys)。