虚拟主机域名注册-常见问题其他问题 → 其他问题

怎么配置ssh无密码/免密码登录(远程linux服务器)

  在本文中,我们将通过一个shell脚本来演示如何创建SSH密钥对,并一次性将公钥复制到多台远程Linux主机上。

  1、在Linux中创建新的SSH密钥

  首先,使用ssh-keygen命令生成SSH密钥对(SSH客户端在登录远程SSH服务器时用来验证自己的私有/身份密钥,以及作为授权密钥存储在运行SSH服务器的远程系统上的公钥),如下所示。

  # ssh-keygen

  2、创建用于多个远程登录的Shell脚本

  接下来,创建一个shell脚本,帮助将公钥复制到多个远程Linux主机上。

  # vim ~/.bin/ssh-copy.sh

  复制并粘贴以下代码到文件中(相应地替换以下变量 USER_NAME - 要连接的用户名,HOST_FILE - 包含主机名或 IP 地址列表的文件,ERROR_FILE - 存储任何 ssh 命令错误的文件)

  #!/bin/bash

  USER_NAME="root"

  HOST_FILE="/root/hosts"

  ERROR_FILE="/tmp/ssh-copy_error.txt"

  PUBLIC_KEY_FILE="$1"

  if [ ! -f $PUBLIC_KEY_FILE ]; then

  echo "File '$PUBLIC_KEY_FILE' not found!"

  exit 1

  fi

  if [ ! -f $HOST_FILE ]; then

  echo "File '$HOST_FILE' not found!"

  exit 2

  fi

  for IP in `cat $HOST_FILE`; do

  ssh-copy-id -i $PUBLIC_KEY_FILE $USER_NAME@$IP 2>$ERROR_FILE

  RESULT=$?

  if [ $RESULT -eq 0 ]; then

  echo ""

  echo "Public key successfully copied to $IP"

  echo ""

  else

  echo "$(cat $ERROR_FILE)"

  echo

  exit 3

  fi

  echo ""

  done

  保存文件并关闭它。

  然后使用chmod命令使脚本可执行,如下所示。

  # chmod +x ssh-copy.sh

  现在运行ssh-copy.sh脚本,并将公共密钥文件指定为第一个参数,如下所示:

  # ./ssh-copy.sh /root/.ssh/prod-rsa.pub

  接下来,使用ssh-agent来管理您的密钥,该密钥将您解密的私钥保存在内存中,并使用它来验证登录名。启动后ssh-agent,按如下所示将您的私钥添加到其中:

  # eval "$(ssh-agent -s)"

  # ssh-add ~/.ssh/prod_rsa

  3、登录到没有密码的远程Linux服务器

  现在,您无需提供用于SSH用户身份验证的密码即可登录任何远程主机。这样,您可以自动化跨服务器进程。

  # ssh root@10.24.20.34




免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:bkook@qq.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
【 双击滚屏 】 【 推荐朋友 】 【 收藏 】 【 打印 】 【 关闭 】 【 字体: 】 
上一篇:针对BootHole给CentOS服务器打补丁的方法
下一篇:CentOS 8 安装Microsoft SQL Server 2019的基本教程
  >> 相关文章