ssh免密登录
ssh免密登录
简单讲:
就俩命令,
先ssh-keygen
生成密钥
再ssh-copy-id user@host
分发公钥就好.
但更多情况下, 需要考虑的东西要比两个命令更多些.
在创建免密登录之前, 首先需要确定, 之后使用免密登录的主服务器帐号是什么.
如果平台\系统使用root帐号, 就使用root帐号进行之后步骤.
如果平台\系统使用was帐号, 就使用was帐号进行之后步骤.
要与之后使用的帐号保持同步.
实现免密登录需要进行三步:
- 一. 在主服务器创建公私钥.
- 二. 把生成的公钥分发到远程服务器内
- 三. 初次使用公钥登录.
步骤
一.创建公私钥.
- 在主服务器(其自身要与其他远程服务器连接) 上, 确定需要建立连接的用户.进入对应
~/.ssh
- 查看是否有已经生成的成对的公私钥. 如无, 则创建新的. 如有, 则直接分发公钥到对应远程服务器.
- 生成密钥:
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
(公钥汇总)