linux 远程ssh免密登陆

写在前面

先说说需求:linux

咱们平时开发、运维操做linux过程当中常常须要实现将远程文件拷贝到本地或者本地文件拷贝到远程;执行远程命令等操做;这个时候创建ssh免密登陆应该是一个比较好的选择;算法

原理shell

在linux系统中,ssh是远程登陆的默认工具,由于该工具的协议使用了RSA/DSA的非对称加密算法;非对称加密算法会分别产生公钥和私钥;运维

如今有两台机器:ServerA和ServerB,ServerA须要免密登陆ServerB,咱们先在ServerA生成公钥和私钥,把公钥拷贝到ServerB指定的文件下,ServerA就能够免密登陆ServerB了;ssh

如下方法一和方法二都是使用依据上面的原理实现;工具

方法一:使用ssh-copy-id 命令拷贝密钥:

一、ServerA执行ssh-keygen生成公私钥;

ssh-keygen

公私钥 默认生成路径/root/.ssh(这里的root是用户名,若是你是其余用户替换便可)测试

如图:这里会让你输入密钥的保护密码,我这里是一路回车(也就是不设置密钥密码)加密

1547276774262

生成的/root/.ssh的文件:code

1547276894955

二、使用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

1547277535362

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;

相关文章
相关标签/搜索