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/
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.
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
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:
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 is 1 alternative - vote for the best!
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.
Alternative for machines without ssh-copy-id
chmod authorized_keys so you don't get "Authentication refused: bad ownership or modes for file /home/user/.ssh/authorized_keys"
chmod authorized_keys so you don't get "Authentication refused: bad ownership or modes for file /home/user/.ssh/authorized_keys"
Creates the .ssh directory on the remote host with proper permissions, if it doesnt exist. Appends your public key to authorized_keys, and verifies it has proper permissions. (if it didnt exist it may have been created with undesireable permissions).
*Korn shell syntax, may or may not work with bash
If you can do better, submit your command here.
You must be signed in to comment.
This can also be done with ssh-copy-id.
modded down because it absolutely duplicates ssh-copy-id
ssh-copy-id user@hostI would use:
scp ~/.ssh/id_rsa.pub user@machine:.ssh/authorized_keys
Yep, what's wrong with scp?
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)
it's still good for a case when your host doesn't have ssh-copy-id program, like freebsd or macosX do
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.
ssh-copy-id fails if you have running sshd in other port than 22. This method work for this situation.
a temp solution for the workaround with ssh-copy-id for sshd in other port
ssh-copy-id '-p 12345 user@machine'@pixel, @fzero scp would completely replace the authorized_keys file; cat >> appends.
What about rsync?
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!