sshpass 实现的SSH免交互密码登录和ARM移植
sshpass在ubuntu上的测试
安装:
sudo apt-get install sshpass
实例:
sshpass -p 'yourpassword' ssh root@192.168.5.103
这可以避免一次交互,
sshpass -p "root" ssh root@192.168.5.103
脚本的写法:
#!/bin/bash export SSHPASS='root' msg=$(sshpass -e ssh root@192.168.5.103 ls /home/root/) echo $msg
源码下载
网址:Non-interactive ssh password auth - Browse /sshpass at SourceForge.net
目前的最新版本是1.10,下载后解压
tar zxvf sshpass-1.10.tar.gz
交叉编译脚本:
文件命名为build.sh
#!/bin/bash
set -e# 配置交叉编译环境变量
ARM_GCC_PATH="/usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf"
export PATH=${ARM_GCC_PATH}/bin:$PATH
export CC=arm-linux-gnueabihf-gcc
export CFLAGS="-I${ARM_GCC_PATH}/include"#全局变量
install_path=`pwd`/install_arm
local_rootfs_path=/home/lkmao/nfsroot/myrootfs
cur_dir=`pwd`
SUDO=""function build_sshpath() {echo "install path : $install_path"mkdir -p $install_path# 配置项目./configure --host=arm-linux-gnueabihf# 编译项目make# 安装到指定目录make install prefix=$install_pathfile $install_path/bin/sshpass
}function port_sshpath() {echo "port sshpath to rootfs"if [ -z "$local_rootfs_path" ] ; thenecho "local_rootfs_path is null"returnfi${SUDO} cp $install_path/bin/sshpass $local_rootfs_path/usr/bin${SUDO} chown root:root $local_rootfs_path/usr/bin/sshpassecho "port sshpath to rootfs done"
}
function check_root() {if [ `whoami` == "root" ];thenSUDO=""echo "root user" elseSUDO="sudo"echo "not root user"fi
}#int main(int argc, char *argv[]){ check_rootshell_full_name=$0shell_short_name="${shell_full_name##*/}"echo shell_short_name=$shell_short_nameif [ "$shell_short_name" == "build.sh" ];thenecho "build sshpath"build_sshpathport_sshpathif [ ! -e "port.sh" ];thenln -s build.sh port.sh || echo "port.sh link build.sh failed"echo "get root authority"fiif [ ! -e "port.sh" ];then${SUDO} ln -s build.sh port.shfielif [ "$shell_short_name" == "port.sh" ];thenecho "port.sh"port_sshpathecho "port sshpath to rootfs done"fiecho "task done"exit 0
# }
测试
命令行测试:
sshpass -p "password" ssh username@192.168.5.5
脚本测试:
#!/bin/sh
export SSHPASS='root'
msg=$(sshpass -e ssh root@192.168.5.103 ls /home/root/)
echo $msg
文件发送测试
sshpass -p "lkmao" scp sshpass_test.sh lkmao@192.168.5.111:/home/lkmao/