本地主机通过阿里云服务器访问远程实验室中的服务器的方法:
前提:购买阿里云服务器,阿里云对学生有9.9元购买一个月的服务器的优惠。
定义:
实验室服务器的ip为A.A.A.A,用户名为lab
阿里云服务器的ip为B.B.B.B,用户名为root
阿里云服务器上远程转发到实验室服务器的端口为2222(可以更换)
阿里云服务器上本地转发到2222端口的端口为3333(可以更换)
步骤:
1. 在实验室的服务器中执行命令ssh -fCNR 2222:127.0.0.1:22 root@B.B.B.B或者autossh -M 222 -fCNR 2222:127.0.0.1:22 root@B.B.B.B -p 22
2. 在阿里云服务器中执行命令ssh -fCNL *:3333:127.0.0.1:2222 127.0.0.1
3. 在阿里云管理网页开放端口3333的入口权限
4. 在本地主机中执行命令ssh -p 3333 lab@B.B.B.B
done.
=====================================================================
使用阿里云作为中间服务器达到从外网访问内网服务器遇到的问题:
1. 在使用了正向代理后,总是发现从本地无法访问服务器的指定端口,问题出现在输入ssh命令后没有反映:
其实阿里云服务器对端口访问做了限制,默认设置下,阿里云服务器只有22端口一个访问入口,所以为了使用其他端口作为映射,需要在阿里云服务器管理网页下设置多几组访问入口。
2. 设置好正向代理后,发现还是没有办法访问阿里云服务器,这次问题出现在输入命令后报错Connection refused:
之所以出现这种错误是因为我在查找资料时看到ssh远程端口转发的用法是ssh -R [bind_address:]port:host:hostport hostname,所以直接把bind_address忽略了,所以被阿里云服务器拒绝,只要用以下语句就可以解决这个问题:ssh -R *:port:host:hostport hostname。
3. 在阿里云服务器上使用ssh端口转发(ssh -R..)时,报错bind: Cannot assign requested address:
这个问题不是一定会出现的,但是如果出现了可以尝试在ssh后加'-4'选项。