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


10

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

Answers:


5

动态应用程序级端口转发(ssh -D)不支持此功能。来看看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

但是请注意,密码以明文形式传输

要配置基于用户名的身份验证,请打开/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)用于验证用户名和密码组合。


4

ssh -D不需要输入密码就可以访问,并且在当前的实现中,不能要求输入密码。如果需要,可以使用现有的http服务器(例如apache)设置多阶段代理,然后使用ssh隧道进行出站连接。

再说一次,如果您深入杂草,那么您可能走错了路,也许可能需要重新考虑您要实现的目标。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.