AI智能
改变未来

SSH免密登录SHELL安装脚本


SSH 免密登录 SHELL安装脚本

使用方法:执行安装脚本sshNopasswd_install.sh 即可生成 /usr/bin/sshNopasswd 这个脚本。(点击下载,或者文末自己复制也行)

这个功能也被ddcwRPM包包含

​ sshNopasswd [用户名@]主机名 [密码]

sh sshNopasswd_install.sh       #只有第一次安装的时候才执行,安装好了,后面就可以直接用了sshNopasswd 192.168.101.171     #用户名和SSH一样,可以省略,默认是当前用户,不跟密码的话,就会提示输入密码(推荐)ssh 192.168.101.171              #这台服务器连接192.168.101.171 现在及以后登录都不用输密码了(除非自己的密钥换了)

例子:

安装脚本,sshNopasswd连接服务器,并输入密码

测试:

之后ssh连接该服务器就不用输密码了

安装脚本sshNopasswd_install.sh内容如下:

#!/bin/bash#write by ddcw at 20200410thiscript=$0function exits(){echo -e "[`date +%Y%m%d-%H:%M:%S`] \\033[31;40m$1\\033[0m"exit 0}function install_sshNopasswd(){[ -f /usr/bin/sshNopasswd ] && exits "this OS has /usr/bin/sshNopasswd"tail -n +19 ${thiscript} > /usr/bin/sshNopasswdchmod 777 /usr/bin/sshNopasswdecho -e "[`date +%Y%m%d-%H:%M:%S`] [\\033[32;40mINSTALL FINISH\\033[0m] \\033[31;40m you can run \\033[0m \\033[32;40msshNopasswd -h\\033[0m \\033[31;40mto get help\\033[0m"exit 0}[ -z $1 ] && install_sshNopasswd#!/bin/env bash#write by ddcw at 20200410dt=$(date +%Y%m%d-%H%M%S)function get_ssh_keygen() {tpe=$1expect << EOFset timeout 30spawn  /usr/bin/ssh-keygen -t ${tpe}expect {"sa):" {send "\\r";exp_continue}"passphrase):" {send "\\r";exp_continue}"again:" {send "\\r"}}expect eofEOF}function scp_file_auto(){[ $# -eq 3 ] || echo_color red "script has internal err DDCW_0001"password=$3dir_tmp=$1host_and_dir=$2expect << EOFset timeout 30spawn scp ${dir_tmp} ${host_and_dir}expect {"(yes/no" {send "yes\\r";exp_continue}"password:" {send "${password}\\r"}}expect eofEOF}function ssh_command(){#        [ $# -eq 3 ] || echo_color red "script has internal err DDCW_0003"user=`echo $1 | awk -F "@" \'{print $1}\'` ||  echo_color red "script has internal err DDCW_0004"user_host=$1commd=$2password=$3expect << EOFset timeout 30spawn ssh ${user_host} ${commd}expect {"(yes/no" {send "yes\\r";exp_continue}"password:" {send "${password}\\r"}}expect "${user}@*" {send "exit\\r"}expect eofEOF}function help_this_script() {echo \'---------------------------------------\'echo \'sshNopasswd [USER]@HOSTNAME [PASSWORD] \'echo "example: sshNopasswd $(whoami)@$(last | head -1 | awk \'{print $3}\') "echo \'---------------------------------------\'exit 0}case $1 in-h|-H|h|H|help|HELP|-help|-HELP|--help|--HELP|help=y|HELP=Y|?|-?)help_this_script;;esacif [ ! -f ~/.ssh/id_rsa ]thenmv ~/.ssh ~/.ssh${dt}get_ssh_keygen rsaget_ssh_keygen dsafiif [ ! -f ~/.ssh/id_rsa.pub ]thenmv ~/.ssh ~/.ssh${dt}get_ssh_keygen rsaget_ssh_keygen dsafiif [ ! -f ~/.ssh/id_dsa ]thenmv ~/.ssh ~/.ssh${dt}get_ssh_keygen dsaget_ssh_keygen rsafiif [ ! -f ~/.ssh/id_dsa.pub ]thenmv ~/.ssh ~/.ssh${dt}get_ssh_keygen dsaget_ssh_keygen rsafi[ -f ~/.ssh${dt}/authorized_keys ] && cp ~/.ssh${dt}/authorized_keys ~/.ssh/authorized_keysssh_rsa_pub=$(cat  ~/.ssh/id_rsa.pub | awk \'{print $1 " " $2}\')ssh_dsa_pub=$(cat  ~/.ssh/id_dsa.pub | awk \'{print $1 " " $2}\')[ -z ${2} ] && read -t 60 -p "please input ${1} password:" password[ -z ${2} ] || export password=$2ssh_command $1 \'mkdir -p touch ~/.ssh\' ${password}ssh_command $1 \'\\[ -f ~/.ssh/authorized_keys \\] || touch ~/.ssh/authorized_keys\' ${password}ssh_command $1 " grep \'${ssh_rsa_pub}\' ~/.ssh/authorized_keys >/dev/null || echo \'${ssh_rsa_pub}\' >> ~/.ssh/authorized_keys" ${password}ssh_command $1 " grep \'${ssh_dsa_pub}\' ~/.ssh/authorized_keys >/dev/null || echo \'${ssh_dsa_pub}\' >> ~/.ssh/authorized_keys" ${passwd}
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » SSH免密登录SHELL安装脚本