Ubuntu Terminal: How to ssh-copy-id When the SSH Port is not 21

For the most part, the default port for SSH access into a Linux machine is 22. However, many people change this default in the name of security, meaning that for most of our function usage, we simply need to use the -p port number switch when trying to access with that remote machine.

However, interestingly enough, the -p switch was never bundled with the useful ssh-copy-id function, meaning that should you try something like this:

ssh-copy-id -p221 -i ~/.ssh/id_rsa.pub username@host

you will get a reply back reading: Bad port ‘umask 077; test -d .ssh || mkdir .ssh ‘ cat >> .ssh/authorized_keys’.

Not exactly encouraging.

However, there is actually a simply way to fix this and use ssh-copy-id when interacting with a non-default port 22 machine. Simply enclose your port declaration together with the host name within quotation marks!

So the correct usage would now look like this:

ssh-copy-id -i ~/.ssh/id_rsa.pub ‘-p 221 username@host’

And damn it, it actually works! Nice.

Related Posts:

  • SCP is a powerful utility that allows us to securely copy files between remote machines. What makes it even more powerful is the ability to add it to scripts and so for today's quick tutorial I will walk you through how you can go about either copying files from or to a remote machine with the use of SCP. Now no ...

  • Although port 21 is the default port used for SSH connections and thus SCP, most of the time you will find that in order to increase protection, the actual assigned port is far removed from the default 21. So how do you specify this when running a SCP copy operation? Well SSH has the lowercase -p switch that all ...

  • If you have a closed machine that doesn't allow MySQL connections from the outside world but does allow SSH access in to the box, say hello to the world of SSH tunneling. The concept is simple. Bind one of your local machine's port via a SSH connection to another box on the outside. For example: [bash]ssh -N ...

  • By default the SSH daemon listens on port 22 for incoming connections, meaning that in order to harden your server installation ever so slightly, you should switch out the default port 22 to something a little more obscure. To do this is relatively easy. Simply open the the config file and change the Port declar ...

  • When attempting to copy a non-empty directory in Ubuntu using the cp command, you will be presented with the following error message: cp: omitting directory mydirectory To force the copy cp command to handle the non-empty directory correctly, you need to force the recursive switch using -R So you should b ...

About Craig Lotter

Craig Lotter is an established web developer and application programmer, with strong creative urges (which keep bursting out at the most inopportune moments) and a seemingly insatiable need to love all things animated. Living in the beautiful coastal town of Gordon's Bay in South Africa, he games, develops, takes in animated fare, trains under the Funakoshi karate style and for the most part, simply enjoys life with his amazing wife and daughter. Oh, and he draws ever now and then too.

  • Valid

    exactly what I was looking for.
    thanks for sharing!

  • E5z8652

    s/port 21/port22/g

    (port 21 is FTP)

  • Bård

    Helped me too. Thanks!

  • Eizt


    Eizt by redeyesofangel.tistory.com

  • anthonvanderneut

    Port 21 is for FTP, ssh by default takes 22

    • http://www.craiglotter.co.za/ Craig Lotter

      Oops, typo. Rectified! :)