我设法在一个树莓Pi 2和我的一个服务器(有一个静态IP的服务器)之间创建了一个反向SSH隧道,它工作得很好。我在服务器上使用的用户帐户称为“ksproxy”(它不是真正的“proxy”,而是随便什么)。
现在我试图使autossh
(来自Debian/Raspbian包autossh
)也能工作,但我没有成功。我可能很亲近。
(在这个问题中,我将真正的IP更改为37.xxx.yyy.zzz
以不发布服务器的实际IP)
以下是工作原理:(没有autossh)
在Rpi上:
rspi@antlia:~ $ ssh -N -R 20000:localhost:22 [email protected]
在服务器(具有静态IP的服务器)上:
[email protected]:~$ ssh rspi@localhost -t -p 20000
rspi@localhost's password:
rspi@antlia:~ $
所以一切正常:我输入密码,得到一个终端/提示。
我甚至可以从桌面访问覆盆子Pi(首先通过服务器),执行以下操作:
ssh -t [email protected] "ssh rspi@localhost -p 20000"
[email protected] password:
rspi@localhost's password:
...
rspi@antlia:~
它首先请求服务器的密码,然后请求Pi的密码,一切都很好。
到现在为止,一直都还不错。
现在我也尝试了同样的方法,但这次是用autossh:
rspi@antlia:~ $ autossh -M 20000 -N -i /home/rspi/.ssh/id_rsa [email protected]
[email protected]:~$ ssh rspi@localhost -p 20000
这“管用”,但它只是停留在那里,什么也没做。
我试图“-vvv”ssh命令的输出,但它只是显示没有发生任何事情。
如果我尝试其他端口,它将失败:
[email protected]:~$ ssh rspi@localhost -p 1234
ssh: connect to host localhost port 1234: Connection refused
如果我尝试正确的端口(20000),但这次使用
-t
参数,同样的事情:它“工作”,但我没有得到终端/提示。这里有一个
-vvv
输出[email protected]:~$ 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
它不要求输入密码,也不显示任何终端/提示。
我在这里有什么不明白或做错了?
请注意,我不认为这是防火墙问题,因为“non-autossh”方法工作得很好(但我没有获得自动的“always up/reconnect”功能)。我真的很想让autossh工作(我知道我可以找到一个解决方法,比如一些crontab自动重新启动我的手动SSH隧道,但这可能比让autossh工作更脆弱)。
最佳答案
autossh
使用-N
和-L
,或-R
或任何其他转发都将建立一个永久的ssh
连接,这确实没有多大作用。您需要为autossh提供相同(或类似)的参数。
关于linux - 如何使用autossh获取持久的反向SSH隧道?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35673005/