由于有时候在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