Pas*_*ten 97 ssh port portforwarding
我目前正在运行一堆:
sudo ssh -L PORT:IP:PORT root@IP
Run Code Online (Sandbox Code Playgroud)
其中IP是安全机器的目标,PORT代表我转发的端口.
这是因为我使用了许多我没有这种转发无法访问的应用程序.执行此操作后,我可以访问localhost:PORT.
现在出现的主要问题是我实际上有4个这样的端口我必须转发.
我的解决方案是打开4个shell并不断向后搜索我的历史记录以查找需要转发的确切端口等,然后运行此命令 - 每个shell中一个(必须填写密码等).
如果我能做的事情如下:
sudo ssh -L PORT1+PORT2+PORT+3:IP:PORT+PORT2+PORT3 root@IP
Run Code Online (Sandbox Code Playgroud)
那真的会有所帮助.
有没有办法让它更容易做到这一点?
NaN*_*NaN 156
-L在同一命令中再次使用该选项.每次都有不同的端口.
jbc*_*oko 76
正是NaN回答的问题,你指定了多个-L参数.我一直这样做.以下是多端口转发的示例:
ssh remote-host -L 8822:REMOTE_IP_1:22 -L 9922:REMOTE_IP_2:22
Run Code Online (Sandbox Code Playgroud)
注意:这与 -L localhost:8822:REMOTE_IP_1:22您未指定的相同localhost.
现在有了这个,你现在可以(从另一个终端)做:
ssh localhost -p 8822
Run Code Online (Sandbox Code Playgroud)
连接到REMOTE_IP_1端口22
和类似的
ssh localhost -p 9922
Run Code Online (Sandbox Code Playgroud)
连接到REMOTE_IP_2端口22
当然,如果您有许多不同的主机/端口可以转发到某些特定的主机/端口,那么没有什么可以阻止您将其包装到脚本中或自动化它.
希望这可以帮助.
Raj*_*rma 30
对于通过同一主机转发多个端口的人可以在他们的~/.ssh/config 中设置类似的东西
Host all-port-forwards
Hostname 10.122.0.3
User username
LocalForward PORT_1 IP:PORT_1
LocalForward PORT_2 IP:PORT_2
LocalForward PORT_3 IP:PORT_3
LocalForward PORT_4 IP:PORT_4
它变得简单ssh all-port-forwards了。
Yuv*_*mon 19
您可以使用以下bash函数(只需将其添加到您的~/.bashrc):
function pfwd {
for i in ${@:2}
do
echo Forwarding port $i
ssh -N -L $i:localhost:$i $1 &
done
}
Run Code Online (Sandbox Code Playgroud)
用法示例:
pfwd hostname {6000..6009}
Run Code Online (Sandbox Code Playgroud)
jbchichoko和yuval提供了可行的解决方案。但是jbchichoko的答案在功能上不是灵活的答案,并且yuval的答案打开的隧道无法关闭,ctrl+c因为它在后台运行。下面给出解决两个缺陷的解决方案:
在~/.bashrc或中定义函数~/.zshrc:
# fsshmap multiple ports
function fsshmap() {
echo -n "-L 1$1:127.0.0.1:$1 " > $HOME/sh/sshports.txt
for ((i=($1+1);i<$2;i++))
do
echo -n "-L 1$i:127.0.0.1:$i " >> $HOME/sh/sshports.txt
done
line=$(head -n 1 $HOME/sh/sshports.txt)
cline="ssh "$3" "$line
echo $cline
eval $cline
}
Run Code Online (Sandbox Code Playgroud)
运行该函数的示例:
fsshmap 6000 6010 hostname
Run Code Online (Sandbox Code Playgroud)
该示例的结果:
您可以访问127.0.0.1:16000~16009与hostname:6000~6009
在我的公司中,我和我的团队成员都需要访问不可访问的“目标”服务器的 3 个端口,因此我创建了一个永久隧道(这是一个可以无限期在后台运行的隧道,请参阅参数-f和-N)从可访问的服务器到目标之一。在我执行的可访问服务器的命令行上:
ssh root@reachableIP -f -N -L *:8822:targetIP:22 -L *:9006:targetIP:9006 -L *:9100:targetIP:9100
Run Code Online (Sandbox Code Playgroud)
我使用过用户,root但您自己的用户可以使用。您必须输入所选用户的密码(即使您已经与该用户连接到可访问的服务器)。
现在,可达机器的端口 8822 对应于目标机器的 22 端口(用于 ssh/PuTTY/WinSCP),可达机器上的端口 9006 和 9100 对应于目标机器的相同端口(在我的情况下,它们托管两个 Web 服务)。
小智 5
我在 debian 上使用并运行的另一行代码:
ssh user@192.168.1.10 $(for j in $(seq 20000 1 20100 ) ; do echo " -L$j:127.0.0.1:$j " ; done | tr -d "\n")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56114 次 |
| 最近记录: |