最近遇到一个比较奇葩的需求, 这个需求是这样的: 服务器A要远程执行服务器B上的一个任务, 而服务器B上的这个任务是向服务器A发送一个文件. 如果不想每次执行任务都输入两次密码的话, 就需要在这两台服务器间设置互相免密登录, 这个需求的实现方法放在下篇博客里写, 这里先写一下怎么设置服务器间互相免密登录.
一. 设置 A 到 B 免密登录
1. 在服务器 A 上生成 sshkey
ssh-keygen -t rsa -C "user1@ip1"
这里的 "user1@ip1"
只是生成的 sshkey 的名称,是为了便于区分, 可以根据自己的喜好命名, 执行上面的命令之后, 默认会在 ~/.ssh
目录下生成两个文件 id_rsa
和 id_rsa.pub
, 分别为私钥和公钥
2. 在服务器 B 上创建 ~/.ssh
和 authorized_keys
文件
如果服务器 B 上有 ~/.ssh
目录并且目录下有 authorized_keys
文件, 则可以跳过这一步, 否则需要先执行下面命令进行创建
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
chmod -R 600 ~/.ssh
3. 将服务器 A 的 id_rsa.pub
中的内容复制到服务器 B 的 authorized_keys
文件中
二. 设置 B 到 A 免密登录
操作流程与上面类似
1. 在服务器 B 上生成 sshkey
ssh-keygen -t rsa -C "user2@ip2"
2. 在服务器 B 上创建 authorized_keys
文件
服务器 A 上已经存在 ~/.ssh
目录, 若该目录下有 authorized_keys
文件, 则可以跳过这一步, 否则需要先创建 authorized_keys
文件
touch ~/.ssh/authorized_keys
chmod -R 600 ~/.ssh
3. 将服务器 B 的 id_rsa.pub
中的内容复制到服务器 A 的 authorized_keys
文件中
完成以上操作后, 两台服务器之间就可以互相免密登录了