先说说需求:linux
咱们平时开发、运维操做linux过程当中常常须要实现将远程文件拷贝到本地或者本地文件拷贝到远程;执行远程命令等操做;这个时候创建ssh免密登陆应该是一个比较好的选择;算法
原理shell
在linux系统中,ssh是远程登陆的默认工具,由于该工具的协议使用了RSA/DSA的非对称加密算法;非对称加密算法会分别产生公钥和私钥;运维
如今有两台机器:ServerA和ServerB,ServerA须要免密登陆ServerB,咱们先在ServerA生成公钥和私钥,把公钥拷贝到ServerB指定的文件下,ServerA就能够免密登陆ServerB了;ssh
如下方法一和方法二都是使用依据上面的原理实现;工具
ssh-keygen
生成公私钥;ssh-keygen
公私钥 默认生成路径
/root/.ssh
(这里的root是用户名,若是你是其余用户替换便可)测试如图:这里会让你输入密钥的保护密码,我这里是一路回车(也就是不设置密钥密码)加密
生成的/root/.ssh
的文件:code
ssh-copy-id
将公钥复制到ServerB中ssh-copy-id -i id_rsa.pub文件 ServerB用户名@ServerB_Ip #示例 ssh-copy-id -i /root/.ssh/id_rsa.pub root@139.199.196.67
这个过程须要输入ServerB对应用户密码。下图添加成功。server
ok,搞定。
ServerA执行:
ssh root@ServerB_Ip date #示例 ssh root@139.199.196.67 date 获得: Sat Jan 12 15:22:17 CST 2019 成功!
其实手工拷贝跟方法一的使用命令拷贝差很少,就是操做上原始一点;
一、生成公私钥:同方法一的步骤1;
二、手动将步骤1中ServerA生成的/root/.ssh/id_rsa.pub
拷贝到ServerB的/root/.ssh
目录下并重命名为authorized_keys
三、测试:同方法一的步骤3;