如果你知道你的一台电脑始终处于开机状态,你也可以将其用作ssh代理。假设你为你的外部IP地址设置了一个域名(例如myhome.dyndns.com或其他),你需要在一台电脑上连接(比如树莓派始终处于开机状态,并将端口从路由器转发到它),然后你的ssh连接将是这样的:
学校 --> (路由器,在此处透明) --> 树莓派 --> Ubuntu或Windows
现在,在你的~/.ssh/config文件中添加以下行:
Host ubuntu 192.168.1.51
Hostname ubuntu (change to match your setup)
User myraspberryuser (change it ;-) )
IdentityFile ~/.ssh/id_rsa (The path to your private key, on the school computer, better on an usb key if public computer)
ForwardAgent yes
RequestTTY yes
ProxyCommand ssh -W %h:%p %r@myhome.dyndns.com
连接的话:
ssh-add ~/.ssh/id_rsa # to do only once per session
ssh myuser@ubuntu (login without password)
从现在开始,如果你输入ssh ubuntu,计算机将首先连接到树莓派,然后启动一个ssh会话到ubuntu计算机。
我建议你,无论你选择哪个端口进行转发,在/etc/sshd.conf中禁用密码,只允许通过ssh密钥登录。这样,如果你在树莓派和ubuntu上设置了密钥,并使用参数'ForwardAgent',你只需要解锁密钥,就不需要密码连接。这样,即使有机器人试图登录你的ssh,他们也永远无法登录,因为你禁止了密码登录。
额外奖励,这也适用于scp,scp foo ubuntu:/tmp/foo将使用相同的设置,无需其他参数。
额外奖励2,这个设置不需要在家里做任何改变,如果明天你换了一台电脑,只需复制/粘贴代码到你的ssh配置文件中,更改主机和IP,就完成了,无需在路由器上打开新的端口。