Netcat will happily pipe UDP into a TCP stream. On the client machine, you would want to do something like: nc -l -u -p syslog | nc localhost 9999 (as root, to bind to the syslog port) On your syslog server end, you'd do something like: nc -l -p 9999 | nc localhost -u syslog Setup your ssh tunnel from port 9999 on the client machine to port 9999 on the syslog server machine. Setup syslogd on the client to log the messages to localhost. Also, make sure that the client syslogd is set up to not receive messages from the network. You'll want to filter on the TCP listening port on the server to prevent people from DoS'ing you with spurious messages.