Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am running an OpenVPN server on Ubuntu 14.04 as well as OpenSSH.

I have my SSH server configured to bind to an IP address on my VPN interface. Once my machine boots, binding to that IP fails.

Once I log in, can see with netstat that sshd is not listening. I am able to restart sshd and the machine will start listening properly. The IP on my VPN is the only IP I have configured sshd to listen on.

At Boot:

sshd[1016]: Set /proc/self/oom_score_adj from 0 to -1000
sshd[1016]: error: Bind to port 22 on failed: Cannot assign requested address.
sshd[1016]: fatal: Cannot bind any address.

Restart SSH:

sshd[3481]: Set /proc/self/oom_score_adj from 0 to -1000
sshd[3481]: Server listening on port 22.

My best guess is that sshd is starting before my VPN is up and running. Is there a way I am able to ensure sshd starts afterwards so it can bind properly?

Any suggestions about what to do or check?

share|improve this question
There most likely is, but it will largely depend on your OS/distro. Please edit your question w/ that piece of information. – tink Jul 17 '14 at 4:08
I have included it. It is on the first line. I am running Ubuntu 14.04. – ehaydenr Jul 17 '14 at 4:09

Looks like ssh uses upstart, but openvpn doesn't ... you might be able to force ssh to come up delayed by doing this, but it's untested (I don't want to mess up my install):

update-rc.d ssh defaults 99

And as it's untested: CAVEAT EMPTOR

share|improve this answer
up vote 0 down vote accepted

I found a solution.

In the OpenVPN configuration file /etc/openvpn/server.conf you can specify a script to run on up. If you take a look at the OpenVPN manual page man openvpn, you will see --up cmd. In the /etc/openvpn/server.conf configuration file, I added a line:

up "/etc/openvpn/up.sh"

This file is one that I created and will be executed when the VPN starts. Right now, mine looks like this:

logger VPN is UP
service ssh restart

Now, every time my OpenVPN server starts up, it will also restart the OpenSSH server as well. Likewise, I am able to also use --down cmd and specify a file in the server configuration file if I wish to have a script executed when the server is shutdown.

You can read more about these in the OpenVPN manual page - man openvpn

Hope this helps anyone with the same issue!

share|improve this answer
How did you set up SSH to bind to the VPN interface? – JB0x2D1 Oct 2 '14 at 17:21
@JB0x2D1 I achieved it without actually binding the interface. I bound it to the IP address i knew my machine would be on after connecting to the VPN. In this case, I was hosting the VPN so I knew what ip my machine (The VPN server) would have inside the VPN. From there, you just have ssh only listen on that ip address. I am not sure whether this is 100% reliable. It was for me, but i would imagine interface binding would be better. Please comment if you learn how to bind. – ehaydenr Oct 2 '14 at 18:05
Thanks. I think the problem is with my client. I can connect to the VPN then run SSH with no problems on one client but not with another. The problem client is running Lubuntu – JB0x2D1 Oct 2 '14 at 18:10

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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