ssh remote server on some port other than 22 without password

I am usually connecting to the remote server with

ssh [email protected] -p 11000

and then giving the password each time for user.
How should I avoid entering the password each time I connect using ssh ?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

First, put this in ~/.ssh/config:

Host server
HostName server.com
Port 11000
User user

You will be able to ssh server, then type the password.

Second, check in ~/.ssh/ to see if you have files named id_rsa and id_rsa.pub. If not, you don’t have any key set up, so you have to generate a pair using ssh-keygen. You can give the keys a password or not. The generated file id_rsa.pub should look like this:

ssh-rsa lotsofrandomtext [email protected]

Third, ssh to the server, create the file ~/.ssh/authorized_keys if it doesn’t exist. Then append the contents of the ~/.ssh/id_rsa.pub that you generated earlier here. This might mean copying the file contents to your clipboard, then opening ~/.ssh/authorized_keys in a text editor and pasting the thing.

Alternatively, use the command ssh-copy-id server (replace server with the name in ~/.ssh/config). This will do the same thing as above. At times I have seen ssh-copy-id getting stuck, so I don’t really like it.

You should now be able to ssh with just ssh server, unless you have chosen to protect your private key with a passphrase. Generally if you don’t use a passphrase, you should protect your private key by other means (e.g. full disk encryption).

Fourth (only needed if you protect your private key with a passphrase), put this in ~/.bashrc:

start_ssh_agent() {
    # Try to use an existing agent
    save=~/.ssh-agent
    if [[ -e "$save" ]]
    then
        . "$save" > /dev/null
    fi
    # No existing agent, start a new one
    if [[ -z "$SSH_AGENT_PID" || ! -e "/proc/$SSH_AGENT_PID" ]]
    then
        ssh-agent > "$save"
        . "$save" > /dev/null
        ssh-add
    fi
}
start_ssh_agent

With this, you will only need to enter the passphrase once per computer boot.

Method 2

Turn to key-based authentication.

Method 3

As a supplement to phunehehe’s answer, see the Gentoo Linux Keychain Guide for a guide to keychain. keychain also uses ssh-agent. The ssh-agent daemon makes the passphrase available (it becomes unavailable when the ssh-agent daemon dies) but keychain reuses an ssh-agent between logins, and optionally prompts for passphrases each time the user logs in, to quote the guide.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments