ssh免密登录

ssh免密登录

简单讲:

就俩命令,
ssh-keygen生成密钥
ssh-copy-id user@host分发公钥就好.

但更多情况下, 需要考虑的东西要比两个命令更多些.

在创建免密登录之前, 首先需要确定, 之后使用免密登录的主服务器帐号是什么.
如果平台系统使用root帐号, 就使用root帐号进行之后步骤.
如果平台系统使用was帐号, 就使用was帐号进行之后步骤.
要与之后使用的帐号保持同步.

实现免密登录需要进行三步:

  • 一. 在主服务器创建公私钥.
  • 二. 把生成的公钥分发到远程服务器内
  • 三. 初次使用公钥登录.

步骤

一.创建公私钥.

  1. 在主服务器(其自身要与其他远程服务器连接) 上, 确定需要建立连接的用户.进入对应~/.ssh
  2. 查看是否有已经生成的成对的公私钥. 如无, 则创建新的. 如有, 则直接分发公钥到对应远程服务器.
  3. 生成密钥:
    ssh-keygen 即可, 有的时候密钥文件较多, 可以-C来添加注释,来增加辨识度, 注释常用邮箱.
    例如:ssh-keygen -C "jenkins-slave@123.com"

二.分发密钥

ssh-copy-id user@host 即可. 该命令会将~/.ssh目录下的公钥,传输到远程服务器下, 并且将内容追加到authorized_keys文件内.
例如: ssh-copy-id root@12.99.111.111.

三.公钥登录

ssh user@host 后确认即可. 会~/.ssh目录下生成know_hosts文件,并记录该远程服务器的信息.
例如: ssh root@12.99.111.111

关于.ssh其内文件

~/.ssh下, 常常有4个文件.
id_rsa,id_rsa.pub,authorized_keys,known_hosts

id_rsa(私钥):

私钥文件, 生成密钥文件的时候成对出现. 访问远程服务器的时候, 与放在远程服务器的公钥配对, 配对成功则能够连接.

id_rsa.pub(公钥):

公钥文件, 生成密钥文件的时候成对出现. 需要把该密钥放进远程服务器内. 当主服务器拿私钥访问远程服务器的时候, 能够配对成功.

authorized_keys(公钥汇总):

存在于远程服务器上, 当主服务器执行ssh-copy-id user@123.123.123.123的时候, 会在远程服务器生成这个文件, 并在其中追加本次需要添加的公钥.
保存该远程服务器内所存在的所有公钥(1个公钥占1行). 一般情况下,该文件有多少行, 证明该个远程服务器能被多少个私钥主动连接.

know_hosts(远程服务器信息记录):

存在于主服务器上. 当主服务器第一次通过密钥连接远程服务器的时候, 会提示警告.Are you sure you want to continue connecting (yes/no)?, 确认之后, 便会生成该文件, 之后便不再会出现, 直到下次远程服务器上的硬件或系统信息发生变化, 无法和该文件内的信息匹配, 才会重新出现提示要求确认.

所以说, 通常情况下.
主服务器下拥有:
id_rsa(私钥)
know_hosts(远程服务器信息记录)
id_rsa.pub(公钥) 可以没有, 但用完就删除掉的话, 下次再用之前生成的私钥配对, 就要去之前连接过的远程服务器内找公钥了. 或者重新生成公私钥, 则这将导致之前配对过的远程服务器无法连接, 要重新配对.
远程服务器下拥有:
authorized_keys(公钥汇总)

原文地址:https://www.cnblogs.com/jrri/p/13915528.html