sh SHELL:管理SSH密钥创建和分发:对于GitHub,自动登录远程实例,....

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh SHELL:管理SSH密钥创建和分发:对于GitHub,自动登录远程实例,....相关的知识,希望对你有一定的参考价值。

#!/bin/bash

DEBUG=false
OPTIND=1
PASSPHRASE=""

show_help() {
cat << EOF
Usage: ${0##*/} [-hp] [-f OUTPUTFILE] [-r REMOTE_HOST] [-c COMMENT]
Generate SSH key and copy it to remote if needed.

    -h               display this help
    -r REMOTE_HOST   send file to remote host
    -f OUTPUTFILE    output filename
    -c COMMENT       ssh key comment
    -p               optional ssh passphrase

EOF
}

while getopts hpr:f:c: opt; do
    case $opt in
        h)  show_help
            exit 0
            ;;
        r)  REMOTE_HOST=$OPTARG
            ;;
        f)  OUTPUTFILE=$OPTARG
            ;;
        c)  COMMENT=$OPTARG
            ;;
        p)  printf "Enter passphrase [none]: "
            read -r PASSPHRASE
            ;;
        *)  show_help >&2
            exit 1
            ;;
    esac
done

if [ $OPTIND -eq 1 ]; then
  show_help
  exit 0
fi
shift "$((OPTIND-1))"

if [ -f "$OUTPUTFILE" ]
then
    echo "File $OUTPUTFILE does exist"
    exit 0
fi

if [ -z ${COMMENT} ];
then
  echo Running: ssh-keygen -q -t rsa -b 4096 -f ${OUTPUTFILE} -N \"$PASSPHRASE\"
  if ! $DEBUG ; then ssh-keygen -q -t rsa -b 4096 -C "${COMMENT}" -f ${OUTPUTFILE} -N \"$PASSPHRASE\" ; fi
else
  echo Running: ssh-keygen -q -t rsa -b 4096 -C "${COMMENT}" -f ${OUTPUTFILE} -N \"$PASSPHRASE\"
  if ! $DEBUG ; then ssh-keygen -q -t rsa -b 4096 -C "${COMMENT}" -f ${OUTPUTFILE} -N \"$PASSPHRASE\" ; fi
fi

echo Running: ssh-agent
if ! $DEBUG ; then eval "$(ssh-agent -s)" ; fi

echo Running: ssh-add ${OUTPUTFILE}
if ! $DEBUG ; then ssh-add $OUTPUTFILE ; fi

if [ ! -z ${REMOTE_HOST} ];
then
  echo Running: ssh-copy-id -i ${OUTPUTFILE} ${REMOTE_HOST}
  if ! $DEBUG ; then ssh-copy-id -i $OUTPUT_FILE $REMOTE_HOST ; fi
fi

# END

以上是关于sh SHELL:管理SSH密钥创建和分发:对于GitHub,自动登录远程实例,....的主要内容,如果未能解决你的问题,请参考以下文章

手工开发SSH-KEY工具(分发密钥批量执行分发文件)

linux下SSH服务利用shell脚本实现密钥的批量分发与执行

sh [复制ssh密钥]将ssh密钥复制到服务器#shell #terminal

linux-shell系列7-ssh密匙生成分发

linux服务器密钥分发

ssh密钥分发与ansible部署指南