SSH(Secure Shell)有很多功能,它既可以代替Telnet,又可以为FTP、POP、甚至为PPP
提供一个安全的"通道".
从ssh这个命令可以看出一些端倪,通常形式为:
ssh ... [command]
可以直接在远程主机执行命令,当忽略command时相当于一个安全的telnet.
其次,sshd类似于xinetd,为许多其他服务监听连接,当有连接到达时fork一下服务程序就
可以了,sftpd大概就是如此.
端口转发是ssh提供的另一十分有用的功能,当指定-L lport:remote_server:rport时,
在普通连接之外,ssh客户端还会在本地监听lport端口,其他想要使用ssh的进程,原本是要
process remote_server:rport
现在要:
process localhost:lport
这样,ssh客户端进程就会接管这个连接,并通知ssh server可以建立remote_server:rport
的连接了,然后就相当于其他进程与remote_server之间多了一段加密的中继,详见:
http://kxwar3.blog.163.com/blog/static/1272336200571862523235/
现在ssh-outside直接使用了-D选项,这是指明其他进程使用的是SOCKS协议,相当于要求
ssh服务器扮演SOCKS服务器,根据SOCKS协议解释客户传送过来的数据并用SOCKS协议包装
目的服务器发回的数据,然后再加密回送给ssh客户,最后再由ssh客户解密回送给其他进程.
ssh与SOCKS之间的关系在于ssh使用SOCKS提供的服务(大概可以这么说吧),ssh是应用层的
程序,而SOCKS位于应用层与传输层之间的协议.