3

After configuring the Tor relay through a remote SSH session my terminal is still waiting (sort of stuck at this line on my remote SSH session ). it says:

Nov 11 10:10:00.000 [notice] Performing bandwidth self-test...done.

Question 0: But I know if I exit the terminal Tor will stop. How can I end the SSH session while I let Tor run in my remote machine?

ubuntu@ip-1XX-3X-1X-10X:~$ tor
Nov 11 10:09:46.345 [notice] Tor v0.2.5.10 (git-43a5f3d91e726291) running on Linux with Libevent 2.0.21-stable, OpenSSL 1.0.1f and Zlib 1.2.8.
Nov 11 10:09:46.345 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning
Nov 11 10:09:46.345 [notice] Read configuration file "/etc/tor/torrc".
Nov 11 10:09:46.347 [notice] Based on detected system memory, MaxMemInQueues is set to 744 MB. You can override this by setting MaxMemInQueues by hand.
Nov 11 10:09:46.348 [notice] Opening Socks listener on 127.0.0.1:9050
Nov 11 10:09:46.348 [notice] Opening OR listener on 0.0.0.0:9001
Nov 11 10:09:46.000 [warn] Failed to unlink /home/ubuntu/.tor/bw_accounting: No such file or directory
Nov 11 10:09:46.000 [notice] Your Tor server's identity key fingerprint is 'Is it okay to mention it here?'
Nov 11 10:09:46.000 [notice] Configured hibernation. This interval begins at 2014-10-31 00:00:00 and ends at 2014-12-11 15:00:00. We have no prior estimate for bandwidth, so we will start out awake and hibernate when we exhaust our quota.
Nov 11 10:09:46.000 [notice] Parsing GEOIP IPv4 file /usr/share/tor/geoip.
Nov 11 10:09:46.000 [notice] Parsing GEOIP IPv6 file /usr/share/tor/geoip6.
Nov 11 10:09:46.000 [notice] Configured to measure statistics. Look for the *-stats files that will first be written to the data directory in 24 hours from now.
Nov 11 10:09:46.000 [notice] Bootstrapped 0%: Starting
Nov 11 10:09:46.000 [notice] We now have enough directory information to build circuits.
Nov 11 10:09:46.000 [notice] Bootstrapped 80%: Connecting to the Tor network
Nov 11 10:09:47.000 [notice] Guessed our IP address as 5X.XX.XX.XXX (source: 1XX.XX9.XX6.X12).
Nov 11 10:09:48.000 [notice] Bootstrapped 85%: Finishing handshake with first hop
Nov 11 10:09:48.000 [notice] Bootstrapped 90%: Establishing a Tor circuit
Nov 11 10:09:50.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
Nov 11 10:09:50.000 [notice] Bootstrapped 100%: Done
Nov 11 10:09:50.000 [notice] Now checking whether ORPort 54.XX.X5.XX9:9001 is reachable... (this may take up to 20 minutes -- look for log messages indicating success)
Nov 11 10:09:52.000 [notice] Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.
Nov 11 10:10:00.000 [notice] Performing bandwidth self-test...done.

Therefore I edited this part in my torrc file expecting it would start after reboot and would also allow me to close the terminal after tor is called upon through SSH.

## Uncomment this to start the process in the background... or use
## --runasdaemon 1 on the command line. This is ignored on Windows;
## see the FAQ entry if you want Tor to run as an NT service.
RunAsDaemon 1

Question 1: Can I now simply type Tor in the terminal and close my SSH and expect Tor relay to work? Would Tor now automatically start at reboot?

Below is my new torrc file :

## Configuration file for a typical Tor user
## Last updated 9 October 2013 for Tor 0.2.5.2-alpha.
## (may or may not work for much older or much newer versions of Tor.)
##
## Lines that begin with "## " try to explain what's going on. Lines
## that begin with just "#" are disabled commands: you can enable them
## by removing the "#" symbol.
##
## See 'man tor', or https://www.torproject.org/docs/tor-manual.html,
## for more options you can use in this file.
##
## Tor will look for this file in various places based on your platform:
## https://www.torproject.org/docs/faq#torrc

## Tor opens a socks proxy on port 9050 by default -- even if you don't
## configure one below. Set "SocksPort 0" if you plan to run Tor only
## as a relay, and not make any local application connections yourself.
#SocksPort 9050 # Default: Bind to localhost:9050 for local connections.
#SocksPort 192.168.0.1:9100 # Bind to this address:port too.

## Entry policies to allow/deny SOCKS requests based on IP address.
## First entry that matches wins. If no SocksPolicy is set, we accept
## all (and only) requests that reach a SocksPort. Untrusted users who
## can access your SocksPort may be able to learn about the connections
## you make.
#SocksPolicy accept 192.168.0.0/16
#SocksPolicy reject *

## Logs go to stdout at level "notice" unless redirected by something
## else, like one of the below lines. You can have as many Log lines as
## you want.
##
## We advise using "notice" in most cases, since anything more verbose
## may provide sensitive information to an attacker who obtains the logs.
##
## Send all messages of level 'notice' or higher to /var/log/tor/notices.log
#Log notice file /var/log/tor/notices.log
## Send every possible message to /var/log/tor/debug.log
#Log debug file /var/log/tor/debug.log
## Use the system log instead of Tor's logfiles
#Log notice syslog
## To send all messages to stderr:
#Log debug stderr

#Log debug stderr

## Uncomment this to start the process in the background... or use
## --runasdaemon 1 on the command line. This is ignored on Windows;
## see the FAQ entry if you want Tor to run as an NT service.
RunAsDaemon 1

## The directory for keeping all the keys/etc. By default, we store
## things in $HOME/.tor on Unix, and in Application Data\tor on Windows.
#DataDirectory /var/lib/tor

## The port on which Tor will listen for local connections from Tor
## controller applications, as documented in control-spec.txt.
#ControlPort 9051
## If you enable the controlport, be sure to enable one of these
## authentication methods, to prevent attackers from accessing it.
#HashedControlPassword 16:872860B76453A77D60CA2BB8C072093276A3D70AAD684053EC4D
#CookieAuthentication 1

############### This section is just for location-hidden services ###

## Once you have configured a hidden service, you can look at the
## contents of the file ".../hidden_service/hostname" for the address
## to tell people.
## 
## HiddenServicePort x y:z says to redirect requests on port x to the
## address y:z.

#HiddenServiceDir /var/lib/tor/hidden_service/
#HiddenServicePort 80 127.0.0.1:80

#HiddenServiceDir /var/lib/tor/other_hidden_service/
#HiddenServicePort 80 127.0.0.1:80
#HiddenServicePort 22 127.0.0.1:22

################ This section is just for relays #####################
#
## See https://www.torproject.org/docs/tor-doc-relay for details.

## Required: what port to advertise for incoming Tor connections.
ORPort 9001
## If you want to listen on a port other than the one advertised in
## ORPort (e.g. to advertise 443 but bind to 9090), you can do it as
## follows.  You'll need to do ipchains or other port forwarding


## ORPort (e.g. to advertise 443 but bind to 9090), you can do it as
## follows.  You'll need to do ipchains or other port forwarding
## yourself to make this work.
#ORPort 443 NoListen
#ORPort 127.0.0.1:9090 NoAdvertise

## The IP address or full DNS name for incoming connections to your
## relay. Leave commented out and Tor will guess.
#Address noname.example.com

## If you have multiple network interfaces, you can specify one for
## outgoing traffic to use.
# OutboundBindAddress 10.0.0.5

## A handle for your relay, so people don't have to refer to it by key.
Nickname QwertyCoolGuy

## Define these to limit how much relayed traffic you will allow. Your
## own traffic is still unthrottled. Note that RelayBandwidthRate must
## be at least 20 KB.
## Note that units for these config options are bytes per second, not bits
## per second, and that prefixes are binary prefixes, i.e. 2^10, 2^20, etc.
RelayBandwidthRate 100 KB  # Throttle traffic to 100KB/s (800Kbps)
RelayBandwidthBurst 200 KB # But allow bursts up to 200KB/s (1600Kbps)

## Use these to restrict the maximum traffic per day, week, or month.
## Note that this threshold applies separately to sent and received bytes,
## not to their sum: setting "4 GB" may allow up to 8 GB total before
## hibernating.
##
## Set a maximum of 4 gigabytes each way per period.
AccountingMax 4 GB
## Each period starts daily at midnight (AccountingMax is per day)
#AccountingStart day 00:00
## Each period starts on the 3rd of the month at 15:00 (AccountingMax
## is per month)
AccountingStart month 11 15:00

## Administrative contact information for this relay or bridge. This line
## can be used to contact you if your relay or bridge is misconfigured or
## something else goes wrong. Note that we archive and publish all
## descriptors containing these lines and that Google indexes them, so
## spammers might also collect them. You may want to obscure the fact that
## it's an email address and/or generate a new address for this purpose.


## spammers might also collect them. You may want to obscure the fact that
## it's an email address and/or generate a new address for this purpose.
ContactInfo
## You might also include your PGP or GPG fingerprint if you have one:
#ContactInfo 0xFFFFFFFF Random Person <nobody AT example dot com>

## Uncomment this to mirror directory information for others. Please do
## if you have enough bandwidth.
#DirPort 9030 # what port to advertise for directory connections
## If you want to listen on a port other than the one advertised in
## DirPort (e.g. to advertise 80 but bind to 9091), you can do it as
## follows.  below too. You'll need to do ipchains or other port
## forwarding yourself to make this work.
#DirPort 80 NoListen
#DirPort 127.0.0.1:9091 NoAdvertise
## Uncomment to return an arbitrary blob of html on your DirPort. Now you
## can explain what Tor is if anybody wonders why your IP address is
## contacting them. See contrib/tor-exit-notice.html in Tor's source
## distribution for a sample.
#DirPortFrontPage /etc/tor/tor-exit-notice.html

## Uncomment this if you run more than one Tor relay, and add the identity
## key fingerprint of each Tor relay you control, even if they're on
## different networks. You declare it here so Tor clients can avoid
## using more than one of your relays in a single circuit. See
## https://www.torproject.org/docs/faq#MultipleRelays
## However, you should never include a bridge's fingerprint here, as it would
## break its concealability and potentionally reveal its IP/TCP address.
#MyFamily $keyid,$keyid,...

## A comma-separated list of exit policies. They're considered first
## to last, and the first match wins. If you want to _replace_
## the default exit policy, end this with either a reject *:* or an
## accept *:*. Otherwise, you're _augmenting_ (prepending to) the
## default exit policy. Leave commented to just use the default, which is
## described in the man page or at
## https://www.torproject.org/documentation.html
##
## Look at https://www.torproject.org/faq-abuse.html#TypicalAbuses
## for issues you might encounter if you use the default exit policy.
## 
## If certain IPs and ports are blocked externally,d e.g. by your firewall,
## you should update your exit policy to reflect this -- otherwise Tor
## users will be told that those destinations are down.


## spammers might also collect them. You may want to obscure the fact that
## it's an email address and/or generate a new address for this purpose.
ContactInfo 
## You might also include your PGP or GPG fingerprint if you have one:
#ContactInfo 0xFFFFFFFF Random Person <nobody AT example dot com>

## Uncomment this to mirror directory information for others. Please do
## if you have enough bandwidth.
#DirPort 9030 # what port to advertise for directory connections
## If you want to listen on a port other than the one advertised in
## DirPort (e.g. to advertise 80 but bind to 9091), you can do it as
## follows.  below too. You'll need to do ipchains or other port
## forwarding yourself to make this work.
#DirPort 80 NoListen
#DirPort 127.0.0.1:9091 NoAdvertise
## Uncomment to return an arbitrary blob of html on your DirPort. Now you
## can explain what Tor is if anybody wonders why your IP address is
## contacting them. See contrib/tor-exit-notice.html in Tor's source
## distribution for a sample.
#DirPortFrontPage /etc/tor/tor-exit-notice.html

## Uncomment this if you run more than one Tor relay, and add the identity
## key fingerprint of each Tor relay you control, even if they're on
## different networks. You declare it here so Tor clients can avoid
## using more than one of your relays in a single circuit. See
## https://www.torproject.org/docs/faq#MultipleRelays
## However, you should never include a bridge's fingerprint here, as it would
## break its concealability and potentionally reveal its IP/TCP address.
#MyFamily $keyid,$keyid,...

## A comma-separated list of exit policies. They're considered first
## to last, and the first match wins. If you want to _replace_
## the default exit policy, end this with either a reject *:* or an
## accept *:*. Otherwise, you're _augmenting_ (prepending to) the
## default exit policy. Leave commented to just use the default, which is
## described in the man page or at
## https://www.torproject.org/documentation.html
##
## Look at https://www.torproject.org/faq-abuse.html#TypicalAbuses
## for issues you might encounter if you use the default exit policy.
## 
## If certain IPs and ports are blocked externally, e.g. by your firewall,
## you should update your exit policy to reflect this -- otherwise Tor
## users will be told that those destinations are down.

It is the very first time I edited this file and got it to work, so I would so much appreciate your input to the configuration file.

  • I restarted my server and checked if Tor starts at reboot, it doesn’t. Im wondering as to why it didn’t when it was enabled in the configuration. – Denis Nov 11 '14 at 11:25
5

Upstart (Ubuntu, Chrome OS, Fedora 9–14), or sysvinit (Debian)

From your previous question I get that you are using Ubuntu as the operating system. The recommended way to install Tor on Ubuntu or Debian is to use the packages provided by the Tor project.

Tor will then run as a daemon under a separate user. You don't start it by hand but you control it using a system service.

Do not use the packages in Ubuntu's universe. In the past they have not reliably been updated. That means you could be missing stability and security fixes.

See https://www.torproject.org/docs/debian.html.en#ubuntu for details.

To start Tor as a service on Ubuntu or Debian, do (as root):

# service tor start

You can then view the log file with:

# tail -f /var/log/tor/notices.log

Systemd (Arch, Fedora 15+, Debian 8+, RHEL 7+, etc.)

To start Tor as a service on a system which uses the systemd init system, you can run (as root):

# systemctl start tor

To enable it to boot at startup:

# systemctl enable tor

If you have installed Tor manually or don't have a systemd service file for some reason, you can create a file called tor.servicein /usr/lib/systemd/system or /etc/systemd/system with the following contents before starting the service:

[Unit]
Description=Anonymizing Overlay Network
After=network.target

[Service]
User=tor
Type=simple
ExecStart=/usr/bin/tor -f /etc/tor/torrc
ExecReload=/usr/bin/kill -HUP $MAINPID
KillSignal=SIGINT
LimitNOFILE=8192
PrivateDevices=yes

[Install]
WantedBy=multi-user.target

Make sure to change the path in ExecStart to wherever you have Tor installed (and the path to your torrc) and the User field to whichever user you wish to run Tor as (it's generally a good idea to make a separate user for Tor or any other daemons to minimize damage from potential remote code execution attacks that may be present in the daemon).

You may also need to reload the service files after you create the Tor service:

# systemctl daemon-reload

No init system

If you really want to just run Tor yourself without using your init system, you can run it as a background process:

$ /usr/bin/tor -f /etc/tor/torrc &

(if Tor is already running, you can send ^Z to move it to the background) and bring it back to the foreground later using the fg command, or run it in your favorite terminal multiplexer (eg. screen or tmux):

$ screen /usr/bin/tor -f /etc/tor/torrc

And detach from the screen using Ctrl-a and then d.

See your multiplexer's man page for info on connecting / disconnecting from teh session. You should not run Tor as root under any circumstances; best to create a new user with limited permissions and run the above commands as that user.

  • 1
    I would emphasize that it is very important the the Apt repositories used are those provided by torproject itself. The Debian and Ubuntu repos carry out-of-date versions of Tor. – ζ-- Nov 11 '14 at 13:22
  • Good point, I've edited my answer. – user66 Nov 11 '14 at 13:24
  • I actually followed this series to install Tor. I believe the above Torrc configures Ubuntu to be an exit relay. I noted I had been getting traffic too since yesterday. However, I also noticed enabling the daemon doesnt start tor automatically. I am required to lognin and start tor, although enabling the daemon option lets me exit my SSH terminal without exiting Tor. – Denis Nov 12 '14 at 0:55
  • 1
    I've made this answer community wiki and edited it to include answers for different init systems. Feel free to add instructions for your favorite init system or OS as well! – Sam Whited Nov 12 '14 at 16:46
  • @SamWhited Can I get a badge for this? ;) – user66 Nov 12 '14 at 17:48
2

In the torrc file set RunAsDaemon 1. and after uncomment this ControlPort 9051 and #HashedControlPassword after no message of error in arm.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.