Q: tsocks doesn't seem to be working for SSH, why? A: tsocks can be used a number of ways, the most common being the LD_PRELOAD environment variable. When set (often through the 'tsocks' script) this requests that the system dynamic loader load tsocks into each process before execution of the process begins. This allows tsocks to redirect calls to standard networking functions to force them to be socksified. Unfortunately LD_PRELOAD simply doesn't work for setuid programs when the user running the program is not the same as the owner of the executable. This is because being able to load code into a privileged executable would be a major security flaw. To fix this problem you may wish to removed the setuid bit from SSH (this will force it not to use privileged TCP ports, disable some forms of RSA authentication to older servers and may have other effects). Alternatively you might wish to force tsocks to be loaded into all processes using the /etc/ld.so.preload file, for more information please see the tsocks man page. Q: tsocks doesn't seem to be working for ftp, why? A: tsocks can only socksify outgoing connection requests from applications, in ftp there are normally two channels, one is made from the client to the server (called the control channel) and another from the server back to the client (called the data channel). If a SOCKS server is between the client and the server the server will incorrectly try to connect back to the SOCKS server rather than the client. Thus the data channel connection will be fail (not that it would likely succeed even if it did try to connect back to the correct client, given the SOCKS server is probably firewalling the network off). The simplest solution to this problem is to use passive mode ftp, in this form of ftp all connections are made from the client to server, even the data channel. Most ftp clients and servers support passive mode, check your documentation (as a tip the Linux command line ftp client uses passive mode when invoced with the -p option)