如何使用autossh获得持久的反向SSH隧道?

时间:2016-02-27 17:29:50

标签: linux ssh connection

我设法在Raspberry Pi 2和我的服务器(具有静态IP的服务器)之间创建了一个反向SSH隧道,它工作正常。我在服务器上使用的用户帐户称为“ksproxy”(它不是真正的“代理”,而是什么)。

现在我正试图让autossh(来自Debian / Raspbian包autossh)也能工作,但我没有成功。我可能很接近。

(我已将此问题中的真实IP更改为37.xxx.yyy.zzz,以便不发布服务器的实际IP)

这是可行的:(没有自动搜索)

关于Rpi:

rspi@antlia:~ $ ssh -N -R 20000:localhost:22 ksproxy@37.xxx.yyy.zzz

在服务器(具有静态IP的服务器)上:

ksproxy@37.xxx.yyy.zzz:~$ ssh rspi@localhost -t -p 20000
rspi@localhost's password:
rspi@antlia:~ $

所以一切正常:我输入密码,我得到一个终端/提示。

我甚至可以从我的桌面访问Raspberry Pi(首先通过服务器),执行:

ssh -t ksproxy@37.xxx.yyy.zzz "ssh rspi@localhost -p 20000"
ksproxy@37.xxx.yyy.zzz password:
rspi@localhost's password:
...
rspi@antlia:~

首先询问服务器的密码,然后是Pi的密码,一切都很好。

到目前为止一切顺利。

现在我尝试相同但这次使用autossh:

rspi@antlia:~ $ autossh -M 20000 -N -i /home/rspi/.ssh/id_rsa ksproxy@37.xxx.yyy.zzz

ksproxy@37.xxx.yyy.zzz:~$ ssh rspi@localhost -p 20000

这“有效”,但它只是停留在那里,什么都不做。

我尝试“-vvv”ssh命令的输出,但它只显示没有任何事情发生。

如果我尝试其他端口,则会失败:

ksproxy@37.xxx.yyy.zzz:~$ ssh rspi@localhost -p 1234
ssh: connect to host localhost port 1234: Connection refused

如果我尝试使用正确的端口(20000),但这次使用-t参数,同样的事情:它“有效”,但我没有得到终端/提示。

这是-vvv输出

ksproxy@37.xxx.yyy.zzz:~$ ssh -vvv rspi@localhost -t -p 20000
OpenSSH_6.7p1 Debian-5+deb8u1, OpenSSL 1.0.1k 8 Jan 2015
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to localhost [127.0.0.1] port 20000.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/ksproxy/.ssh/id_rsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/ksproxy/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
...
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.7p1 Debian-5+deb8u1

这不是要求密码,它没有显示任何终端/提示。

我在这里不理解或做错了什么?

请注意,我不认为这是一个防火墙问题,因为“非自动”方法工作正常(但后来我没有获得自动“始终启动”/重新连接功能)。我真的想让autossh工作(我知道我可以找到一个解决方法,就像一些crontab自动重新启动我的手动SSH隧道,但这可能比使autossh工作更脆弱。)

1 个答案:

答案 0 :(得分:0)

autossh -N -L-Rsshsudo apt-get install libpq-dev 以及任何其他转发都不会建立永久GET /bla bla/_search { "size": 0, "aggs": { "whatevernameyouwant": { "percentiles": { "field": "price", "percents": [ 1, 5, 25, 50, 75, 95, 99 ] } } } } 连接。你需要给autossh提供相同(或类似)的参数。