What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again.

Delete that bloated snippets file you've been using and share your personal repository with the world. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.

If you have a new feature suggestion or find a bug, please get in touch via http://commandlinefu.uservoice.com/

Get involved!

You can sign-in using OpenID credentials, or register a traditional username and password.

First-time OpenID users will be automatically assigned a username which can be changed after signing in.

Universal configuration monitoring and system of record for IT.

Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for:



May 19, 2015 - A Look At The New Commandlinefu
I've put together a short writeup on what kind of newness you can expect from the next iteration of clfu. Check it out here.
March 2, 2015 - New Management
I'm Jon, I'll be maintaining and improving clfu. Thanks to David for building such a great resource!

Top Tags





Copy your ssh public key to a server from a machine that doesn't have ssh-copy-id

Terminal - Copy your ssh public key to a server from a machine that doesn't have ssh-copy-id
cat ~/.ssh/id_rsa.pub | ssh user@machine "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
2009-02-05 19:37:56
User: DEinspanjer
Functions: cat ssh
Copy your ssh public key to a server from a machine that doesn't have ssh-copy-id

If you use Mac OS X or some other *nix variant that doesn't come with ssh-copy-id, this one-liner will allow you to add your public key to a remote machine so you can subsequently ssh to that machine without a password.


There are 5 alternatives - vote for the best!

Terminal - Alternatives
ssh-copy-id username@hostname
ssh-copy-id user@host
2009-08-07 16:36:19
User: matthewbauer
Functions: ssh

Same as original just no $ at start

cat ~/.ssh/id_rsa.pub | ssh <REMOTE> "(cat > tmp.pubkey ; mkdir -p .ssh ; touch .ssh/authorized_keys ; sed -i.bak -e '/$(awk '{print $NF}' ~/.ssh/id_rsa.pub)/d' .ssh/authorized_keys; cat tmp.pubkey >> .ssh/authorized_keys; rm tmp.pubkey)"
2011-09-30 07:39:24
User: tamouse
Functions: cat ssh
Tags: ssh awk

This one is a bit more robust -- the remote machine may not have an .ssh directory, and it may not have an authorized_keys file, but if it does already, and you want to replace your ssh public key for some reason, this will work in that case as well, without duplicating the entry.

cat ~/.ssh/id_rsa.pub | ssh user@host 'cat >> ~/.ssh/authorized_keys'
2012-12-08 17:00:47
User: eneko
Functions: cat ssh

Alternative for machines without ssh-copy-id

cat ~/.ssh/id_rsa.pub | ssh user@host 'cat >> ~/.ssh/authorized_keys'
2012-12-08 17:00:47
User: eneko
Functions: cat ssh

Alternative for machines without ssh-copy-id

Know a better way?

If you can do better, submit your command here.

What others think

This can also be done with ssh-copy-id.

Comment by Burn 355 weeks ago

modded down because it absolutely duplicates ssh-copy-id

ssh-copy-id user@host
Comment by markdrago 355 weeks ago

I would use:

scp ~/.ssh/id_rsa.pub user@machine:.ssh/authorized_keys

Comment by pixel 355 weeks ago

Yep, what's wrong with scp?

Comment by fzero 355 weeks ago

pixel ... have you now not just overwritten the destination servers authorized_keys?

ssh-copy-id does it all for you and as safely as possible... give it a whirl

What have you got to loose? (apart from sanity, health, job, etc)

Comment by finkployd 355 weeks ago

it's still good for a case when your host doesn't have ssh-copy-id program, like freebsd or macosX do

Comment by codesnik 355 weeks ago

if you forget about ssh-copy-id, I like this version better which works even on a new machine:

cat ~/.ssh/id_rsa.pub | ssh machine 'mkdir .ssh ; cat >>.ssh/authorized_keys'

to test:

ssh machine id

If it asks for a password, it's not working. Sometimes a server will disable passwordless logins.

Comment by shavenwarthog 355 weeks ago

ssh-copy-id fails if you have running sshd in other port than 22. This method work for this situation.

Comment by starchox 349 weeks and 2 days ago

a temp solution for the workaround with ssh-copy-id for sshd in other port

ssh-copy-id '-p 12345 user@machine'
Comment by starchox 349 weeks and 2 days ago

@pixel, @fzero scp would completely replace the authorized_keys file; cat >> appends.

Comment by mfisher911 346 weeks and 1 day ago

What about rsync?

Comment by hced 206 weeks ago

For those of you asking why not just use scp or rsync, this is a solution to replace ssh-copy-id for OS's that don't have it natively (i.e. OS X). To use scp or setup rsync wouldn't be an issue if you only had a few servers. However, I have over 300 servers I needed to setup my public key on and scp or rsync would have been time prohibitive.

I did however find someone who built a shell script that you can use as ssh-copy-id command that helped me immensely. It can be found at http://phildawson.tumblr.com/post/484798267/ssh-copy-id-in-mac-os-x

I then just created a list of all my hosts from my SecureCRT .ini files and dumped them into a file called HOSTS.

I then just ran this command:

for i in $(cat HOSTS); do ssh-copy-id user@$i; done

Did over 300 servers in less than 10 mins!

Comment by boogybren 195 weeks and 3 days ago

On OS X you can install ssh-copy-id via Homebrew

Comment by alecthegeek 126 weeks and 1 day ago

if you ignore about ssh-copy-id, I like this edition better which performs even on a new machine:

cat ~/.ssh/id_rsa.pub | ssh device 'mkdir .ssh ; cat >>.ssh/authorized_keys'

to test: ssh device id

If it demands a security password, it's not operating. Sometimes a server will turn off passwordless logins.\

Read more android phone news http://www.moonarstore.com/s4-smartphone-android-23-os-sc8810-wifi-50-inch-quadcore-white-color-p-1613.html

Comment by nihaoyanasister 111 weeks and 1 day ago

if you can't/won't use ssh-copy-id, note that .ssh and authorized_keys may need tweaks to avoid issues (http://unix.stackexchange.com/questions/36540/why-am-i-still-getting-a-password-prompt-with-ssh-with-public-key-authentication, http://serverfault.com/questions/321534/public-key-authentication-fails-only-when-sshd-is-daemon)

# permissions:

chmod 700 ~/.ssh; chmod 600 ~/.ssh/*

# and maybe also:

restorecon -r -vv ~/.ssh
Comment by pratalife 104 weeks and 5 days ago

a bit updated version that checks if .ssh directory exist:

cat ~/.ssh/id_rsa.pub | ssh user@machine "[ -d ~/.ssh ] || (mkdir ~/.ssh && chmod 700 ~/.ssh); cat >> ~/.ssh/authorized_keys"
Comment by franciszekk 34 weeks and 4 days ago

Your point of view

You must be signed in to comment.