sshpass调用ssh建立隧道不挂后台

需求:每次使用动态的用户名密码登陆ssh并建立端口转发。

为了能够使用脚本自动建立隧道,不用手工输入密码,需要用到sshpass这个命令(需额外安装),组合后命令如下:

sshpass -p sshPassword ssh -p sshPort -L localPort:targetHost:targetPort user@sshHost -Nf

 sshpass -p指定密码后跟原有ssh命令。

在不使用sshpass手动输入密码的情况下,ssh使用-f参数可以让隧道建立后挂到后台,隧道依旧能用。

使用sshpass命令后,自动输入密码,但隧道先建立然后自动马上断开了。

 

解决办法:不使用ssh的-f参数,通过nohup的方式让sshpass挂到后台

nohup sshpass -p xxx ssh .... &

原因猜测:

sshpass后跟ssh命令,ssh启动的进程为sshpass的子进程,ssh命令挂后台后sshpass继续往下执行,由于没有任务sshpass进程退出了,sshpass进程退出后子进程ssh建立的隧道也被kill了。

posted @ 2021-01-30 20:49  小伍子  阅读(842)  评论(0编辑  收藏  举报