Linux如何使用ssh自动化建立私钥和公钥登录服务器

摘要: Linux如何使用ssh自动化建立私钥和公钥登录服务器,Linux,ssh,私钥,公钥,自动化批量,脚本,shell脚本,好用的shell脚本指南,您值得拥有

  Linux 快速建立ssh互信私钥和公钥教程 中,我们介绍了在Linux下如何使用ssh建立私钥和公钥登录服务器方法。

  但是在实际工作中,往往机器很多,如果一台一台的去建立互信,则也需要耗费巨大的人力。

  在网上看到一个自动化批量建立互信的脚本,在此分享给大家。

 

 一、脚本

  在主机上建立sh文件,名称随意,然后在文件中输入以下内容:

  

    #!/bin/sh
  DEST_USER=$1
  PASSWORD=$2
  HOSTS_FILE=$3
  if [ $# -ne 3 ]; then
  echo "Usage:"
  echo "$0 remoteUser remotePassword hostsFile"
  exit 1
  fi
  SSH_DIR=~/.ssh
  SCRIPT_PREFIX=./tmp
  echo ===========================


  # 1. prepare directory .ssh

  

    mkdir $SSH_DIR
  chmod 700 $SSH_DIR


  # 2. generat ssh key

  

    TMP_SCRIPT=$SCRIPT_PREFIX.sh
  echo "#!/usr/bin/expect">$TMP_SCRIPT
  echo "spawn ssh-keygen -b 1024 -t rsa">>$TMP_SCRIPT
  echo "expect *key*">>$TMP_SCRIPT
  echo "send \r">>$TMP_SCRIPT
  if [ -f $SSH_DIR/id_rsa ]; then
  echo "expect *verwrite*">>$TMP_SCRIPT
  echo "send y\r">>$TMP_SCRIPT
  fi
  echo "expect *passphrase*">>$TMP_SCRIPT
  echo "send \r">>$TMP_SCRIPT
  echo "expect *again:">>$TMP_SCRIPT
  echo "send \r">>$TMP_SCRIPT
  echo "interact">>$TMP_SCRIPT
  chmod +x $TMP_SCRIPT
  /usr/bin/expect $TMP_SCRIPT
  rm $TMP_SCRIPT


  # 3. generat file authorized_keys

  

cat $SSH_DIR/id_rsa.pub>>$SSH_DIR/authorized_keys


  # 4. chmod 600 for file authorized_keys

 

 chmod 600 $SSH_DIR/authorized_keys


  echo ===========================

  # 5. copy all files to other hosts

  

    for ip in $(cat $HOSTS_FILE)
  do
  if [ "x$ip" != "x" ]; then
  echo -------------------------
  TMP_SCRIPT=${SCRIPT_PREFIX}.$ip.sh
  # check known_hosts
  val=`ssh-keygen -F $ip`
  if [ "x$val" == "x" ]; then
  echo "$ip not in $SSH_DIR/known_hosts, need to add"
  val=`ssh-keyscan $ip 2>/dev/null`
  if [ "x$val" == "x" ]; then
  echo "ssh-keyscan $ip failed!"
  else
  echo $val>>$SSH_DIR/known_hosts
  fi
  fi
  echo "copy $SSH_DIR to $ip"
  echo "#!/usr/bin/expect">$TMP_SCRIPT
  echo "spawn scp -r $SSH_DIR $DEST_USER@$ip:~/">>$TMP_SCRIPT
  echo "expect *assword*">>$TMP_SCRIPT
  echo "send $PASSWORD\r">>$TMP_SCRIPT
  echo "interact">>$TMP_SCRIPT
  chmod +x $TMP_SCRIPT
  #echo "/usr/bin/expect $TMP_SCRIPT" >$TMP_SCRIPT.do
  #sh $TMP_SCRIPT.do&
  /usr/bin/expect $TMP_SCRIPT
  rm $TMP_SCRIPT
  echo "copy done."
  fi
  done
  echo done.


  

二、建立主机列表文件

  新建主机列表文件,一行一个需要建立互信的IP。

  示例如下:

  192.168.1.2

  192.168.1.3

  192.168.1.4

  192.168.1.5

  

三、启动程序及参数

  运行刚才新建的.sh文件,脚本接受三个参数,远程机器用户名、密码和host文件名(相对路径或绝对路径均可)。

  例如:

  ./auto_auth.sh app app ./hostList.cfg

  脚本会生成pub公钥文件,并将公钥拷贝至指定主机。

  Generating public/private rsa key pair.

  Enter file in which to save the key (/cbss/app/.ssh/id_rsa):

  /cbss/app/.ssh/id_rsa already exists.

  Overwrite (y/n)? y

  Enter passphrase (empty for no passphrase):

  Enter same passphrase again:

  Your identification has been saved in /cbss/app/.ssh/id_rsa.

  Your public key has been saved in /cbss/app/.ssh/id_rsa.pub.

  The key fingerprint is:

  SHA256:6l4bndsVOxwTRe8So0Q/uRJ8FY5tbML1AGJTrn7dG94 app@resourcepool-0232-jkdd02

  The key's randomart image is:

  +---[RSA 2048]----+

  | +.+..+=|

  | . *..*=o|

  | =+O*o|

  | o ++B |

  | S . o * .|

  | . o . + B |

  | . o + . *..|

  | . . o + ...+|

  | .o . . . oE|

  +----[SHA256]-----+

  公钥和私钥文件就生成成功了。

  

实验二:快速建立ssh互信私钥和公钥教程

  

一、环境介绍

  (以下IP和用户名密码均为示例,非真实数据)

  主机A:162.123.12.12

  主机B:162.123.12.13

  用户名和密码都是app

  

二、生成私钥和公钥

  我们可以用如下命令来生成公钥和私钥:

  ssh-keygen -t rsa

  命令行会输出如下结果,如果机器之前已经生成过公钥和私钥,会提示你是否覆盖。

  Generating public/private rsa key pair.

  Enter file in which to save the key (/cbss/app/.ssh/id_rsa):

  /cbss/app/.ssh/id_rsa already exists.

  Overwrite (y/n)? y

  Enter passphrase (empty for no passphrase):

  Enter same passphrase again:

  Your identification has been saved in /cbss/app/.ssh/id_rsa.

  Your public key has been saved in /cbss/app/.ssh/id_rsa.pub.

  The key fingerprint is:

  SHA256:6l4bndsVOxwTRe8So0Q/uRJ8FY5tbML1AGJTrn7dG94 app@resourcepool-0232-jkdd02

  The key's randomart image is:

  +---[RSA 2048]----+

  | +.+..+=|

  | . *..*=o|

  | =+O*o|

  | o ++B |

  | S . o * .|

  | . o . + B |

  | . o + . *..|

  | . . o + ...+|

  | .o . . . oE|

  +----[SHA256]-----+

  这样,公钥和私钥文件就生成成功了。

  

三、将公钥拷贝至目标服务器

  我们想从机器A建立至机器B的互信,则需要将A的公钥拷贝至B机器上。

  Linux下可以用ssh-copy-id命令快速拷贝公钥文件。

  ssh-copy-id -i ~/.ssh/id_rsa.pub app@162.123.12.13

  接下来会提示输入目标主机用户的密码,输入后按回车即可。

主机用户密码输入

  这样,A主机到B主机的ssh互信就建立好了。

  测试一下,发现从A主机到B主机不需要再重新输入密码了。

  $ ssh app@162.123.12.13

  Authorized only. All activity will be monitored and reported

  Last login: Wed Jul 26 09:21:14 2017 from 162.123.12.13

本文由 帝一博客 原创发布。用户在本站发布的原创内容(包括但不仅限于回答、文章和评论),著作权均归用户本人所有。独家文章转载,请联系邮箱:17762131@qq.com。获得授权后,须注明本文地址: https://bubukou.com/mljb/1135.html

网友留言评论

0条评论