我有一个服务器,我将从本地计算机登录到服务器并创建一个隧道。
我有一个没有创建隧道的 bash 脚本
sshpass -p ${1} ssh ${2}@${3}
ssh -L <port1>:<host>:80 -i /home/<user>/private_key <user_ID>@<host2>
我得到的结果 -
sh ssh_to_box.sh pwd username remotehost
Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-145-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
144 packages can be updated.
0 updates are security updates.
New release '18.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
*** System restart required ***
Last login: Thu May 30 09:36:36 2019 from remotehost
$
脚本未执行隧道。 它也应该做$bash
如何从该远程机器ssh到远程并创建隧道并保持隧道活动?
可能您实际上正在创建隧道,您应该检查是否
ss -lptn | awk '{ print $4 }' | awk -F ':' '{ print $2 }' | sed -e '/<port1>/!d'
打开 ssh 控制台时返回一些东西,如果为 true,则您有一个隧道。 (可能有更好的方法来做这个检查,但我不知道很尴尬)
如果您希望隧道持久存在,您可以在 tmux/screen 中执行它或运行nohup <tunnel_command> &
请务必注意,名称也将由远程主机解析为 dns。
解决了问题 - sshpass -p ${1} ssh -t ${2}@${3} 'ssh -L '${4}':'${5}':'${6}' -i/home/_key '${2}'@'${7}'
'