一、背景
- 我们在开发、测试或者运维过程中,总是需要登录Linux服务器进行环境搭建,软件安装和日志查询等操作,如果有多台服务器,则需要进行多次切换,切换过程会需要输入密码难免会觉得麻烦,且效率低下。这种情况下,可以利用软件保存密码,然后软件多开解决此问题,但是难免有可能会出现搞错服务器的情况。
- 再者在处理定时或者自动化任务,比如定时进行文件传输的话和自动部署,就会比较不方便了,通过以下方式可以解决该问题。
二、步骤
- 假设两台服务器
- 服务器A(172.16.206.101)
- 服务器B(172.16.206.102)
- 例子实现的是登录:服务器A —> 服务器B
- 文件:服务器A —> 服务器 B
- 首先我们在服务器A(172.16.206.101),使用下面的命令生成私钥:id_rsa 和 公钥:id_rsa.pub,公钥是可以发送到别的服务器的,私钥是保存在当前服务器中的(切忌传输到别的服务器上)。
ssh-keygen -t rsa
- 执行上面的命令,然后一路回车即可,生成文件的目录为:/root/.ssh,.ssh为隐藏文件目录,想查看的话通过命令
ll -a
进行查看。
- 服务器A,通过命令把公钥(id_rsa.pub)传到服务器B 的 /root/.ssh 目录下。
scp /root/.ssh/id_rsa.pub root@172.16.206.102:/root/.ssh 如果目标服务器(这里的服务器B),不是22端口,假设是33333端口,则: scp -P 33333 /root/.ssh/id_rsa.pub root@172.16.206.102:/root/.ssh
- 注意:此时可能会保错:没有那个文件或目录,意思是在服务器B 上没有找到 /root/.ssh目录。
- 处理:登录到服务器B上通过命令
ssh 172.16.206.102
生成该目录。目录生成后,重新切回到服务器A上,重新执行scp命令。
-
服务器B,中,进入到 /root/.ssh 目录,通过命令
cat id_rsa.pub >> authorized_keys
把服务器A生成的公钥(id_rsa.pub)追加到 authorized_keys
-
完成后,服务器A就可以通过免密登录到服务器B了
登录: ssh root@172.16.206.102
-
传输文件
传输文件: scp /home/1.jpg root@172.16.206.102:/home/picture 命令行的意思是:把home目录下 1.jpg的图片,传输到服务器B的 home目录下的 picture文件夹中
三、总结
-
服务器A,生成公钥(id_rsa.pub)和私钥(id_rsa);
ssh-keygen -t rsa
-
服务器A,把公钥传输到服务器B的 /root/.ssh 目录;
scp /root/.ssh/id_rsa.pub root@${服务器B的IP}:/root/.ssh
如:scp /root/.ssh/id_rsa.pub root@172.16.206.102:/root/.ssh如果服务器B 没有 /root/.ssh ,登录到服务器B,通过命令:
ssh 服务器B的IP
生成;
如:ssh 172.16.206.102 -
服务器B,进入 /root/.ssh,把公钥追加到 authorized_keys文件中;
cat id_rsa.pub >> authorized_keys
如果没有authorized_keys文件也没有关系,执行命令后,会自动生成
四、注意事项
- 两台服务器之间登录的用户名需保持一致。