如何在CentOS上使用基于密码的身份validation通过ssh设置SOCKS代理?

我知道如何使用ssh -D来设置一个简单的代理,但是我想在这种情况下使用基于用户名和密码的身份validation。 有什么办法吗?

ssh -D不需要要求密码进行访问,而且目前的实现不能要求input密码。 如果你愿意,你可以使用一个退出的http服务器(例如apache)build立一个多阶段的代理,然后使用ssh隧道作为其出站连接。

再一次,如果你进入杂草丛生,那么你可能走错了路,也许可能需要重新考虑你想要完成的事情。

dynamic应用程序级端口转发( ssh -D )不支持此function。 相反,请看Dante :

 [I] net-proxy/dante Available versions: 1.1.19-r4 (~)1.2.3 (~)1.3.0 (~)1.3.1 (~)1.3.1-r1 (~)1.3.2 {debug kerberos pam selinux static-libs tcpd} Installed versions: 1.3.2(04:14:03 PM 11/08/2011)(pam static-libs tcpd -debug -kerberos -selinux) Homepage: http://www.inet.no/dante/ Description: A free socks4,5 and msproxy implementation 

但请注意, 密码以明文forms传输

要configuration基于用户名的身份validation,请打开/etc/sockd.conf文件并添加/更改以下内容:

 logoutput: syslog /var/log/dante.log # methods for socks-rules. method: username #rfc931 # when doing something that can require privilege, # it will use the userid "sockd". user.privileged: root # when running as usual, # it will use the unprivileged userid of "sockd". user.notprivileged: sockd pass { from: 0.0.0.0/0 to: 0.0.0.0/0 protocol: tcp udp command: bind connect udpassociate log: error method: username } 

开始后检查听筒:

 # netstat -nlp | grep sockd tcp 0 0 127.0.0.1:1080 0.0.0.0:* LISTEN 5463/sockd tcp 0 0 192.168.15.36:1080 0.0.0.0:* LISTEN 5463/sockd 

如果出现错误,请查看日志文件( /var/log/messages/var/log/dante.log )。

PS:系统密码文件( /etc/passwd )用于validation用户名和密码的组合。