Search code examples
sshcontainersibm-cloudconnection-refused

IBM Container , "Connection refused" when SSH to the public IP


I'm using IBM Bluemix and Docker.

[My goal] I want to create a container. I found from the website that we could use SSH to login as "root" user. So I guess I could also install maven and MySQL on this container. Though IBM Container is a Docker based file system, we could treat container just like a Linux virtual machine (please correct me if wrong).

I found a similar question here, where njleviere said that port 22 is closed. How do I determine if a port is open or closed? If it's closed, how do I open it? Also, I think that port 22 is actually open in my case.

[Problem Description] I mainly followed this website, but I'm using Ubuntu and SSH instead of Putty.

First, I create the key file with ssh-keygen. For the filename, I tried "cloud" and "cloud.key". Both failed. So I think the name for the key does not matter (please correct me if wrong).

I open the .pub key. There is a "yu@yu-VirtualBox" tag at the end of the key file. I am not sure if I should include this tag. So I tried several things:

  1. ssh-rsa KeyString yu@yu-VirtualBox
  2. ssh-rsa KeyString
  3. KeyString

All failed.

Then I created the container. I choose the "ibmliberty". Given the public IP I created before (already unbind from any containers), I added 22 to the public Port. And pasted the "cloud.pub" to the SSH key. After several minutes, the container started to run. The following two links are the screen shot for the Bluemix console on creating the container.

Then I could see the default page for port 9080 in browser for https://169.44.124.121:9080. It said "Welcome to Liberty" and "WebSphere Application Server V8.5.5.9".

Then I typed (cloud and cloud.pub is the key file)

ssh -i cloud root@169.44.124.121

Then I get the

ssh: connect to host 169.44.124.121 port 22: Connection refused

I used cf ic ps to check the port. It looks fine. I see 169.44.124.121:22->22/tcp under the PORTS.

Also, I see many programmers use the docker file to launch the IBM Container. Should I switch to docker file instead of this IBM console web interface?


Solution

  • The default ibm-liberty image on bluemix doesn't include sshd. You could add it - you'll need to add supervisord, sshd, and the appropriate configuration for both into your Dockerfile.

    Conversely, if what you really want is just a secure command line connection into your container, you can use cf ic exec or docker exec. (e.g. cf ic exec -ti mycontainername bash ) That'll give you a command line without having the overhead (and security exposure) of a running sshd.