适用背景
- 工作中频繁登录服务器和拷贝文件,都会提示输入密码
- 在持续集成的场景下,自动部署应用时是没有人工干预的
解决方案
下面以实现A服务器到B服务器的免密码登录和拷贝文件为例,介绍相关的配置。(即A访问B不需要输密码)
A服务器(主服务器)地址:192.168.1.AAA
B服务器(从服务器)地址:192.168.1.BBB
step1 在A生成密钥对
如果已经有了也可以选择不用生成
ssh-keygen -t rsa -P ""
执行上述命令,一路回车,会在当前登录用户的home目录下的.ssh目录下(一般为~/.ssh/
下)生成id_rsa
和id_rsa.pub
两个文件,分别代表密钥对的私钥和公钥,如下图所示:
Step2 拷贝A的公钥(id_rsa.pub)到B
将A的公钥(id_rsa.pub)拷贝到B的用户下为例(我们以root为例)
scp ~/.ssh/id_rsa.pub root@192.168.1.BBB:/root
step3 登录B拷贝A的id_rsa.pub内容到.ssh目录下的authorized_keys文件中
登录B拷贝A的id_rsa.pub内容到.ssh目录下的authorized_keys文件中
cat id_rsa.pub >> ~/.ssh/authorized_keys
如果提示没有.ssh
文件夹就自己重建一个
此时在A中用SSH登录B或向B拷贝文件,将不需要密码
实现B免密码登录A,操作方式是一样的,在B中用ssh-keygen生成ssh密钥对,将公钥拷贝到A中,A将B的公钥拷贝到.ssh目录下的authorized_keys文件中即可
解决方案快捷方式
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.BBB