反向ssh,實現外網鏈接內網

這麼個狀況:ssh

機器A:處於內網,能夠鏈接Bspa

機器B:處於公網,不能鏈接A代理

目標:機器B直連機器Acode

 

經過反向代理實現:server

內網上機器A進行操做:blog

ssh -f -N -R 11111:localhost:22 username_B@機器B的公網ipip

外網上機器B進行操做:rem

ssh  username_A@localhost -p 11111it

這裏的11111能夠換成不衝突的任意端口號反向代理

 

固然,兩邊的public key要互相添加

 

附:

自動守護腳本

#! /usr/bin/perl
use strict;
use warnings;

while(1){
    my $status=✓
    print "status: $status\n";
    if(!$status){
        &start();
        print "connected\n";
    }
    sleep(3)
}

sub start{
    system("ssh -f -N -R 11111:localhost:22 username_B\@serverB_IP -o ExitOnForwardFailure=yes");
}

sub check{
    my $a=`ps -ef | grep '11111:localhost:22' | grep -v 'grep' | wc -l`;
    my @a=split(/\s+/,$a);
    my $result=$a[0];
    return($result);
}

 

出現Error: remote port forwarding failed for listen port 11111這個錯誤的解決辦法

在機器B上

1,netstat -anp

2,kill PID

 

爲了防止ssh自動中斷,須要在機器B上按期與機器A通信

#! /us/bin/perl

while (1) {
    `ssh -p 11111 username_A\@localhost \"echo 1\"`;
    sleep(10)
}
相關文章
相關標籤/搜索