使用SSH牵线搭桥,映射端口,变间接登录为直接登录

转载 kambrian   2014-04-03 23:56  

如果你需要频繁使用 ssh 登录服务器,可能会遇到如下问题:

服务器限制了登录IP,只要某些地址比如只有办公室的机器可以直接登录服务器。回家以后,要登服务器只能先 ssh 到办公室的机器,再从办公室 ssh 登录服务器。如果还需要传输文件,也只能类似经过办公室的机器中转完成。麻烦之处列举如下:

  1. 两次登录
  2. 不能开图形界面
  3. 文件传输受限于中转机器的存储空间

其实,这两次 ssh 完全可以通过一次 ssh 完成,只需将远程端口映射到本地。

1 $ ssh -fN -L 4321:remote_host:22 bridge_user@bridge_host

其中4321是本地要绑定的端口号,只是个例子,你也可以取为其它空闲端口。

remost_host是要登录到的最终服务器地址。

bridge_host是中转机器地址,比如上文中的办公室机器。bridge_user是中转机器上的用户名。

输入中转机器密码后,便成功将remost_host的22号端口( ssh 默认端口)绑定到本地的4321号端口。从此之后你的本地4321端口便不再是你的本地4321端口,而是你的服务器的22端口。要登录服务器,只需:

1 $ ssh -p 4321 remote_user@localhost -xY

其中remote_user是remote_host上的用户名, -xY 表示如有需要可在本地打开图形界面。输入remote_host上的密码之后,便登录成功。

上述端口绑定过程只需进行一次,此后 remote_user@localhost:4321 便等价于 remote_user@remote_host:22 ,可以直接 ssh ,或者 sftpscp ,或者 rsync 。比如

1 $ sftp -oPort=4321 remote_user@localhost
2 $ scp -P 4321 myfile remote_user@localhost:copytofile
3 $ rsync -e "ssh -p 4321" myfile myfile remote_user@localhost:copytofile

常用命令可以设置 alias ,以后便可方便跳转啦!

http://asc.2dark.org/node/131

http://www.yeolar.com/note/2014/04/03/ssh-tunnel/

http://www.yeolar.com/note/2014/04/03/ssh-tunnel/