linux实现SSH免密登录设置,以及shell脚本实现

原创/朱季谦

最近在搭建linux集群,做了SSH免密登录的设置,正好把过程记录一下:

一.用搭建好的两台虚拟机做演示,A机器:192.168.200.129,B机器:192.168.200.128

二.分别在两台机器上执行以下步骤:

1.使用root登录A服务器:su – root

image

2.在登录的A服务器上通过指定加密算法指令ssh-keygen -t rsa来生成秘钥,执行完该指令一直回车即可。

405905cc223d52b0ae542e7fa020637

说明:(1)ssh-keygen –t rsa是指定加密的算法是rsa

          (2)(/root/.ssh/id_rsa)是保存秘钥的路径

        (3)/root/.ssh/id_rsa.pub是生成的公钥

3.将公钥传到B服务器,以root用户登录B机器,回车后,当跳出yes/no的选项后,选择yes,然后输入B机器的密码,出现下面截图类型的信息,就证明设置成功了,这时可以通过ssh root@192.168.200.128测试下,正常情况下可免密登录到B机器上

a2d012efa890d14c5a69f6be9c0530a

A机器传给B机器的秘钥存放在/root/.ssh/目录下,进入到这个目录,可以看到:

image

完成以上步骤,就可以在A机器上免密码SSH登录B机器了,这时若要互相免密,可在B机器上把以上步骤重复一遍,但B机器ssh-copy-id root@ip的ip则是A机器的了。

以上步骤,可以通过shell脚本来自动化操作互免。

 1 #!/bin/bash
 2 set -e
 3 
 4 ssh-keygen() {
 5     yum -y install expect
 6     /usr/bin/expect <<-EOF
 7     set timeout 60
 8     spawn ssh-keygen
 9     expect {
10         "Enter file in which to save the key (/root/.ssh/id_rsa):" { send "\r"; exp_continue}
11         "Overwrite (y/n)?" { send "n\r" }
12         "Enter passphrase (empty for no passphrase):" { send "\r"; exp_continue} 
13         "Enter same passphrase again:" { send "\r"}
14     }
15     expect eof
16     EOF
17     echo ""
18 }
19 
20 
21 ssh-copy(){
22     /usr/bin/expect <<-EOF
23     set timeout -1
24     spawn ssh-copy-id $1
25     expect {
26         "*yes/no" { send "yes\r"; exp_continue }
27         "*password:" { send "$2\r" }
28     }
29     expect eof
30     EOF
31 }
32 
33 
34 ssh-keygen
35 ssh-copy "root@192.168.200.128"

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朱季谦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值