bash记住ssh密码


由于有时候在bash中使用ssh登录远程主机,但是每次输入密码非常繁琐。用惯了xshell等可视化工具,有记录密码的功能。就想着能否在命令行下也能记住密码方便快速登录呢。经过一番查找找到了解决方案.使用sshpass。

首先安装,

apt-get install sshpass

然后,创建文件名为ssh.sh,添加内容:

#!/usr/bin/env bash
RC_ERR_NO_PARAM=1
RC_ERR_NO_USER=11
RC_ERR_NO_PASSWORD=21
RC_ERR_NO_HOST=31
RC_ERR_NO_PORT=41
RC_SUCCESS=0
pass_path=~/.ssh/ssh_pass
key=$1
if [ -z $key ]; then
  echo "Please Input the Alias or IP Address:"
  echo ""
  cat $pass_path | cut -d ' ' -f 1,4
  exit $RC_ERR_NO_PARAM
fi
info=`grep $key\  $pass_path`
user=`echo $info | cut -d' ' -f 2`
pwd=`echo $info | cut -d' ' -f 3`
host=`echo $info | cut -d' ' -f 4`
port=`echo $info | cut -d' ' -f 5`
if [ -z $user ]; then  
  echo "ERR_NO_USER, please record user. file path $pass_path"
  exit $RC_ERR_NO_USER
fi
if [ -z $pwd ]; then
  echo "ERR_NO_PASSWORD, please record password. file path $pass_path"
  exit $RC_ERR_NO_PASSWORD
fi
if [ -z $host ]; then
  echo "ERR_NO_HOST, please record host. file path $pass_path"  
  exit $RC_ERR_NO_HOST
fi
if [ -z $port ]; then
  echo "ERR_NO_PORT, please record port. file path $pass_path"  
  exit $RC_ERR_NO_PORT
fi
exec sshpass -p $pwd  ssh $user@$host -p$port
exit $RC_SUCCESS


再在.ssh目录添加文件~/.ssh/ssh_pass,文件位置无所谓只要跟上面脚本中的文件路径对应上就可以:

#alias user pwd host port
ubt root 123 192.168.112.12 22

随后在命令行中执行:

./ssh.sh ubt

即可执行,当然指定ip地址也可以。如果想全局使用也可以将ssh.sh加入bin目录。

本文主要内容参考了https://hongtoushizi.iteye.com/blog/2272299

Archives