如何使用 bash 脚本使用私钥在 ssh 后创建到远程计算机的隧道

问题描述 投票:0回答:2

我有一个服务器,我将从本地计算机登录到服务器并创建一个隧道。

我有一个 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 到远程并从该远程计算机创建隧道并保持隧道处于活动状态?

bash ssh
2个回答
1
投票

可能您实际上正在创建隧道,您应该检查是否

ss -lptn | awk '{ print $4 }' | awk -F ':' '{ print $2 }' | sed -e '/<port1>/!d'

当 ssh 控制台打开时返回一些内容,如果 true 你有一个隧道。 (可能有更好的方法来进行此检查,但我不太了解 awk)

如果您希望隧道持久存在,可以在 tmux/screen 中执行它或运行

nohup <tunnel_command> &

需要注意的是,名称也将由远程主机解析。


0
投票

问题已解决:

sshpass -p ${1} ssh -t ${2}@${3} 'ssh -L '${4}':'${5}':'${6}' -i /home/<Path>_key '${2}'@'${7}''
© www.soinside.com 2019 - 2024. All rights reserved.