Installing the public key as an authorized key on a server. With both Tectia SSH and OpenSSH servers, access to an account is granted by adding the public key to a /.ssh/authorizedkeys file on the server. To install the public key, Log into the server, edit the authorizedkeys file with your favorite editor, and cut-and-paste the public key. Apr 12, 2018 Generating public/private rsa key pair. Enter file in which to save the key (/ yourhome /.ssh/idrsa): Press ENTER to save the key pair into the.ssh/ subdirectory in your home directory, or specify an alternate path. If you had previously generated an SSH key pair, you may see the following prompt. Jun 26, 2019 How SSH Keys Work. SSH keys are generated in pairs and stored in plain-text files. The key pair (or keypair) consists of two parts. A private key, usually named idrsa.The private key is stored on your local computer and should be kept secure, with permissions set so that no other users on your computer can read the file. /.ssh - your hidden directory contains all your ssh certificates idrsa.pub OR iddsa.pub are RSA public keys, (the private key located on the client machine). The primary key for example can be used to enable cloning project from remote repository securely to your client end point. Creating a SSH Public Key on OSX¶. You generate an SSH key through Mac OS X by using the Terminal application. Once you upload a valid public SSH key, Gerrit can authenticate you based on this key. Quick steps: Create and use an SSH public-private key pair for Linux VMs in Azure.; 4 minutes to read +4; In this article. With a secure shell (SSH) key pair, you can create virtual machines (VMs) in Azure that use SSH keys for authentication, eliminating the need for passwords to sign in. Creating an SSH key on Linux & macOS 1. Check for existing SSH keys. You should check for existing SSH keys on your local computer. You can use an existing SSH key with Bitbucket Server if you want, in which case you can go straight to either SSH user keys for personal use or SSH access keys for system use. Open a terminal and run the following.
Updated by LinodeWritten by Linode
Report an Issue |View File |Edit File
Password authentication is the default method most SSH (Secure Shell) clients use to authenticate with remote servers, but it suffers from potential security vulnerabilities, like brute-force login attempts. An alternative to password authentication is public key authentication, in which you generate and store on your computer a pair of cryptographic keys and then configure your server to recognize and accept your keys. Using key-based authentication offers a range of benefits:
Key-based login is not a major target for brute-force hacking attacks.
If a server that uses SSH keys is compromised by a hacker, no authorization credentials are at risk of being exposed.
Because a password isn’t required at login, you are able to able to log in to servers from within scripts or automation tools that you need to run unattended. For example, you can set up periodic updates for your servers with a configuration management tool like Ansible, and you can run those updates without having to be physically present.
This guide will explain how the SSH key login scheme works, how to generate an SSH key, and how to use those keys with your Linode.
NoteHow SSH Keys Work
SSH keys are generated in pairs and stored in plain-text files. The key pair (or keypair) consists of two parts:
A private key, usually named
id_rsa
. The private key is stored on your local computer and should be kept secure, with permissions set so that no other users on your computer can read the file.Caution
A public key, usually named
id_rsa.pub
. The public key is placed on the server you intend to log in to. You can freely share your public key with others. If someone else adds your public key to their server, you will be able to log in to that server.
When a site or service asks for your SSH key, they are referring to your SSH public key (id_rsa.pub
). For instance, services like GitHub and Gitlab allow you to place your SSH public key on their servers to streamline the process of pushing code changes to remote repositories.
The authorized_keys File
In order for your Linode to recognize and accept your key pair, you will need to upload your public key to your server. More specifically, you will need to upload your public key to the home directory of the user you would like to log in as. If you would like to log in to more than one user on the server using your key pair, you will need to add your public key to each of those users.
To set up SSH key authentication for one of your server’s users, add your public key to a new line inside the user’s authorized_keys
file. This file is stored inside a directory named .ssh/
under the user’s home folder. A user’s authorized_keys
file can store more than one public key, and each public key is listed on its own line. If your file contains more than one public key, then the owner of each key listed will be able to log in as that user.
Granting Someone Else Access to your Server
To give someone else access to your server’s user, simply add their public key on a new line in your authorized_keys
file, just as you would add your own. To revoke access for that person, remove that same line and save the changes.
Challenge-Response
When logging in to a server using SSH, if there is a public key on file on that server, the server will create a challenge. This challenge will be crafted in such a way that only the holder of the private SSH key will be able to decipher it.
This challenge-response action happens without any user interaction. If the person attempting to log in has the corresponding private key, then they will be safely logged in. If not, the login will either fail or fall back to a password-based authentication scheme.
SSH Key Passphrases
You can optionally provide an additional level of security for your SSH keys by encrypting them with a passphrase at the time of creation. When you attempt to log in using an encrypted SSH key, you will be prompted to enter its passphrase. This is not to be confused with a password, as this passphrase only decrypts the key file locally and is not transferred over the Internet as a password might be.
Ssh For Mac
If you’d like to set up your logins so that they require no user input, then creating a passphrase might not be desirable, but it is strongly recommended nevertheless.
Linux and macOS
Generate a Key Pair
Perform the steps in this section on your local machine.
Create a new key pair.
Caution
This command will overwrite an existing RSA key pair, potentially locking you out of other systems.
If you’ve already created a key pair, skip this step. To check for existing keys, run
ls ~/.ssh/id_rsa*
.If you accidentally lock yourself out of the SSH service on your Linode, you can still use the Lish console to login to your server. After you’ve logged in via Lish, update your
authorized_keys
file to use your new public key. This should re-establish normal SSH access.The
-b
flag instructsssh-keygen
to increase the number of bits used to generate the key pair, and is suggested for additional security.Press Enter to use the default names
id_rsa
andid_rsa.pub
in the/home/your_username/.ssh
directory before entering your passphrase.While creating the key pair, you will be given the option to encrypt the private key with a passphrase. This means that the key pair cannot be used without entering the passphrase (unless you save that passphrase to your local machine’s keychain manager). We suggest that you use the key pair with a passphrase, but you can leave this field blank if you don’t want to use one.
Upload your Public Key
There are a few different ways to upload your public key to your Linode from Linux and macOS client systems:
Using ssh-copy-id
ssh-copy-id
is a utility available on some operating systems that can copy a SSH public key to a remote server over SSH.
Ssh Key Generation Mac
To use
ssh-copy-id
, pass your username and the IP address of the server you would like to access:You’ll see output like the following, and a prompt to enter your user’s password:
Verify that you can log in to the server with your key.
Using Secure Copy (scp)
Secure Copy (scp
) is a tool that copies files from a local computer to a remote server over SSH:
authorized_keys
file on your server. If you have already set up other public keys on your server, use the ssh-copy-id
command or enter your key manually.Connect to your server via SSH with the user you would like to add your key to:
Create the
~/.ssh
directory andauthorized_keys
file if they don’t already exist:Give the
~/.ssh
directory andauthorized_keys
files appropriate file permissions:In another terminal on your local machine, use
scp
to copy the contents of your SSH public key (id_rsa.pub
) into theauthorized_keys
file on your server. Substitute in your own username and your server’s IP address:Verify that you can log in to the server with your key.
Manually Copy an SSH Key
You can also manually add an SSH key to a server:
Begin by copying the contents of your public SSH key on your local computer. You can use the following command to output the contents of the file:
You should see output similar to the following:
Note that the public key begins with
ssh-rsa
and ends with[email protected]
.Once you have copied that text, connect to your server via SSH with the user you would like to add your key to:
Create the
~/.ssh
directory andauthorized_keys
file if they don’t already exist:Give the
~/.ssh
directory andauthorized_keys
files appropriate file permissions:Open the
authorized_keys
file with the text editor of your choice (nano
, for example). Then, paste the contents of your public key that you copied in step one on a new line at the end of the file.Save and close the file.
Note
If you initially logged into the server as
root
but edited theauthorized_keys
file of another user, then the.ssh/
folder andauthorized_keys
file of that user may be owned byroot
. Set that other user as the files’ owner:Verify that you can log in to the server with your key.
Connect to the Remote Server
SSH into the server from your local machine:
If you chose to use a passphrase when creating your SSH key, you will be prompted to enter it when you attempt to log in. Depending on your desktop environment, a window may appear:
Caution
Do not allow the local machine to remember the passphrase in its keychain unless you are on a private computer which you trust.You may also see the passphrase prompt at your command line:
Enter your password. You should see the connection establish in the local terminal.
Windows
The following instructions use the PuTTY software to connect over SSH, but other options are available on Windows too.
Generate a Key Pair with PuTTY
Download PuTTYgen (
puttygen.exe
) and PuTTY (putty.exe
) from the official site.Launch
puttygen.exe
. TheRSA
key type at the bottom of the window is selected by default for an RSA key pair butED25519
(EdDSA using Curve25519) is a comparable option if your remote machine’s SSH server supports DSA signatures. Do not use theSSH-1(RSA)
key type unless you know what you’re doing.Increase the RSA key size from
2048
bits4096
and click Generate:PuTTY uses the random input from your mouse to generate a unique key. Once key generation begins, keep moving your mouse until the progress bar is filled:
When finished, PuTTY will display the new public key. Right-click on it and select Select All, then copy the public key into a Notepad file.
Save the public key as a
.txt
file or some other plaintext format. This is important–a rich text format such as.rtf
or.doc
can add extra formatting characters and then your private key won’t work:Enter a passphrase for the private key in the Key passphrase and Confirm passphrase text fields. Important: Make a note of your passphrase, you’ll need it later:
Click Save private key. Choose a file name and location in Explorer while keeping the
ppk
file extension. If you plan to create multiple key pairs for different servers, be sure to give them different names so that you don’t overwrite old keys with new:
Manually Copy the SSH Key with PuTTY
Launch
putty.exe
. Find the Connection tree in the Category window, expand SSH and select Auth. Click Browse and navigate to the private key you created above:Scroll back to the top of the Category window and click Session. Enter the hostname or IP address of your Linode. PuTTY’s default TCP port is
22
, the IANA assigned port for for SSH traffic. Change it if your server is listening on a different port. Name the session in the Saved Sessions text bar and click Save:Click the Open button to establish a connection. You will be prompted to enter a login name and password for the remote server.
Once you’re logged in to the remote server, configure it to authenticate with your SSH key pair instead of a user’s password. Create an
.ssh
directory in your home directory on your Linode, create a blankauthorized_keys
file inside, and set their access permissions:Open the
authorized_keys
file with the text editor of your choice (nano
, for example). Then, paste the contents of your public key that you copied in step one on a new line at the end of the file.Save, close the file, and exit PuTTY.
Verify that you can log in to the server with your key.
Using WinSCP
Uploading a public key from Windows can also be done using WinSCP:
Cautionauthorized_keys
file on your server. If you have already set up other public keys on your server, use the PuTTY instructions instead.Ssh Public Key Generation Mac Air
In the login window, enter your Linode’s public IP address as the hostname, the user you would like to add your key to, and your user’s password. Click Login to connect.
Once connected, WinSCP will show two file tree sections. The left shows files on your local computer and the right shows files on your Linode. Using the file explorer on the left, navigate to the file where you saved your public key in Windows. Select the public key file and click Upload in the toolbar above.
You’ll be prompted to enter a path on your Linode where you want to upload the file. Upload the file to
/home/your_username/.ssh/authorized_keys
.Verify that you can log in to the server with your key.
Connect to the Remote Server with PuTTY
Start PuTTY and Load your saved session. You’ll be prompted to enter your server user’s login name as before. However, this time you will be prompted for your private SSH key’s passphrase rather than the password for your server’s user. Enter the passphrase and press Enter.
Troubleshooting
If your SSH connections are not working as expected, or if you have locked yourself out of your system, review the Troubleshooting SSH guide for troubleshooting help.
Upload your SSH Key to the Cloud Manager
It is possible to provision each new Linode you create with an SSH public key automatically through the Cloud Manager.
Log in to the Cloud Manager.
Click on your username at the top right hand side of the page. Then click on My Profile in the dropdown menu that appears:
Note
If you are viewing the Cloud Manager in a smaller browser window or on a smaller device, then the My Profile link will appear in the sidebar links. To view the sidebar links, click on the disclosure button to the left of the blue Create button at the top of the page.From the My Profile page, select the SSH Keys tab, and then click Add a SSH Key:
Create a label for your key, then paste in the contents of your public SSH key (
id_rsa.pub
):Click Add Key.
When you next create a Linode you’ll be given the opportunity to include your SSH key in the Linode’s creation. This key will be added to the root user of the new Linode.
In the Create Linode form, select the SSH key you’d like to include. This field will appear below the Root Password field:
Next Steps
After you set up your SSH keys and confirm they are working as expected, review the How to Secure Your Server guide for instructions on disabling password authentication for your server.
Join our Community
Mac Os Copy Ssh Public Key
This guide is published under a CC BY-ND 4.0 license.
Before you begin
Using SSH public-key authentication to connect to a remote system is a robust, more secure alternative to logging in with an account password or passphrase. SSH public-key authentication relies on asymmetric cryptographic algorithms that generate a pair of separate keys (a key pair), one 'private' and the other 'public'. You keep the private key a secret and store it on the computer you use to connect to the remote system. Conceivably, you can share the public key with anyone without compromising the private key; you store it on the remote system in a .ssh/authorized_keys
directory.
To use SSH public-key authentication:
- The remote system must have a version of SSH installed. The information in this document assumes the remote system uses OpenSSH. If the remote system is using a different version of SSH (for example, Tectia SSH), the process outlined below may not be correct.
- The computer you use to connect to the remote server must have a version of SSH installed. This document includes instructions for generating a key pair with command-line SSH on a Linux or macOS computer, and with PuTTY on a Windows computer.
- You need to be able to transfer your public key to the remote system. Therefore, you must either be able to log into the remote system with an established account username and password/passphrase, or have an administrator on the remote system add the public key to the
~/.ssh/authorized_keys
file in your account. - Two-factor authentication using Two-Step Login (Duo) is required for access to the login nodes on IU research supercomputers, and for SCP and SFTP file transfers to those systems. SSH public-key authentication remains an option for researchers who submit the 'SSH public-key authentication to HPS systems' user agreement (log into HPC everywhere using your IU username and passphrase), in which you agree to set a passphrase on your private key when you generate your key pair. If you have questions about how two-factor authentication may impact your workflows, contact the UITS Research Applications and Deep Learning team. For help, see Get started with Two-Step Login (Duo) at IU and Help for Two-Step Login (Duo).
Set up public-key authentication using SSH on a Linux or macOS computer
To set up public-key authentication using SSH on a Linux or macOS computer:
Ssh Public Key File
- Log into the computer you'll use to access the remote host, and then use command-line SSH to generate a key pair using the RSA algorithm.
To generate RSA keys, on the command line, enter:
- You will be prompted to supply a filename (for saving the key pair) and a password (for protecting your private key):
- Filename: To accept the default filename (and location) for your key pair, press
Enter
orReturn
without entering a filename.Alternatively, you can enter a filename (for example,
my_ssh_key
) at the prompt, and then pressEnter
orReturn
. However, many remote hosts are configured to accept private keys with the default filename and path (~/.ssh/id_rsa
for RSA keys) by default. Consequently, to authenticate with a private key that has a different filename, or one that is not stored in the default location, you must explicitly invoke it either on the SSH command line or in an SSH client configuration file (~/.ssh/config
); see below for instructions. - Password: Enter a password that contains at least five characters, and then press
Enter
orReturn
. If you pressEnter
orReturn
without entering a password, your private key will be generated without password-protection.If you don't password-protect your private key, anyone with access to your computer conceivably can SSH (without being prompted for a password) to your account on any remote system that has the corresponding public key.
Your private key will be generated using the default filename (for example,
id_rsa
) or the filename you specified (for example,my_ssh_key
), and stored on your computer in a.ssh
directory off your home directory (for example,~/.ssh/id_rsa
or~/.ssh/my_ssh_key
).The corresponding public key will be generated using the same filename (but with a
.pub
extension added) and stored in the same location (for example,~/.ssh/id_rsa.pub
or~/.ssh/my_ssh_key.pub
). - Filename: To accept the default filename (and location) for your key pair, press
- Use SFTP or SCP to copy the public key file (for example,
~/.ssh/id_rsa.pub
) to your account on the remote system (for example,darvader@deathstar.empire.gov
); for example, using command-line SCP:You'll be prompted for your account password. Your public key will be copied to your home directory (and saved with the same filename) on the remote system.
- Log into the remote system using your account username and password.If the remote system is not configured to support password-based authentication, you will need to ask system administrators to add your public key to the
~/.ssh/authorized_keys
file in your account (if your account doesn't have~/.ssh/authorized_keys
file, system administrators can create one for you). Once your public key is added to your~/.ssh/authorized_keys
file on the remote system, the setup process is complete, and you should now be able to SSH to your account from the computer that has your private key. - If your account on the remote system doesn't already contain a
~/.ssh/authorized_keys
file, create one; on the command line, enter the following commands:If your account on the remote system already has a~/.ssh/authorized_keys
file, executing these commands will not damage the existing directory or file. - On the remote system, add the contents of your public key file (for example,
~/id_rsa.pub
) to a new line in your~/.ssh/authorized_keys
file; on the command line, enter:You may want to check the contents of
~/.ssh/authorized_keys
to make sure your public key was added properly; on the command line, enter: - You may now safely delete the public key file (for example,
~/id_rsa.pub
) from your account on the remote system; on the command line, enter:Alternatively, if you prefer to keep a copy of your public key on the remote system, move it to your
.ssh
directory; on the command line, enter: - Optionally, repeat steps 3-7 to add your public key to other remote systems that you want to access from the computer that has your private key using SSH public-key authentication.
- You now should be able to SSH to your account on the remote system (for example,
username@host2.somewhere.edu
) from the computer (for example,host1
) that has your private key (for example,~/.ssh/id_rsa
):- If your private key is password-protected, the remote system will prompt you for the password or passphrase (your private key password/passphrase is not transmitted to the remote system):
- If your private key is not password-protected, the remote system will place you on the command line in your home directory without prompting you for a password or passphrase:
If the private key you're using does not have the default name, or is not stored in the default path (not
~/.ssh/id_rsa
), you must explicitly invoke it in one of two ways:- On the SSH command line: Add the
-i
flag and the path to your private key.For example, to invoke the private key
host2_key
, stored in the~/.ssh/old_keys
directory, when connecting to your account on a remote host (for example,username@host2.somewhere.edu
), enter: - In an SSH client configuration file: SSH gets configuration data from the following sources (in this order):
- From command-line options
- From the user's client configuration file (
~/.ssh/config
), if it exists - From the system-wide client configuration file (
/etc/ssh/ssh_config
)
The SSH client configuration file is a text file containing keywords and arguments. To specify which private key should be used for connections to a particular remote host, use a text editor to create a
~/.ssh/config
that includes theHost
andIdentityFile
keywords.For example, for connections to
host2.somewhere.edu
, to make SSH automatically invoke the private keyhost2_key
, stored in the~/.ssh/old_keys
directory, create a~/.ssh/config
file with these lines included:Once you save the file, SSH will use the specified private key for future connections to that host.
You can add multiple
Host
andIdentityFile
directives to specify a different private key for each host listed; for example:Alternatively, you can use a single asterisk (
*
) to provide global defaults for all hosts (specify one private key for several hosts); for example:For more about the SSH client configuration file, see the OpenSSH SSH client configuration file on the web or from the command line (
man ssh_config
).
Set up public-key authentication using PuTTY on a Windows 10 or Windows 8.x computer
The PuTTY command-line SSH client, the PuTTYgen key generation utility, the Pageant SSH authentication agent, and the PuTTY SCP and SFTP utilities are packaged together in a Windows installer available under The MIT License for free download from the PuTTY development team.
After installing PuTTY:
- Launch PuTTYgen.
- In the 'PuTTY Key Generator' window, under 'Parameters':
- For 'Type of key to generate', select RSA. (In older versions of PuTTYgen, select SSH2-RSA.)
- For 'Number of bits in a generated key', leave the default value (
2048
).
- Under 'Actions', click Generate.
- When prompted, use your mouse (or trackpad) to move your cursor around the blank area under 'Key'; this generates randomness that PuTTYgen uses to generate your key pair.
- When your key pair is generated, PuTTYgen displays the public key in the area under 'Key'. In the 'Key passphrase' and 'Confirm passphrase' text boxes, enter a passphrase to passphrase-protect your private key.If you don't passphrase-protect your private key, anyone with access to your computer will be able to SSH (without being prompted for a passphrase) to your account on any remote system that has the corresponding public key.
- Save your public key:
- Under 'Actions', next to 'Save the generated key', click Save public key.
- Give the file a name (for example,
putty_key
), select a location on your computer to store it, and then click Save.
- Save your private key:
- Under 'Actions', next to 'Save the generated key', click Save private key.If you didn't passphrase-protect your private key, the utility will ask whether you're sure you want to save it without a passphrase. Click Yes to proceed or No to go back and create a passphrase for your private key.
- Keep 'Save as type' set to PuTTY Private Key Files (*.ppk), give the file a name (for example,
putty_private_key
), select a location on your computer to store it, and then click Save. - If you wish to connect to a remote desktop system such as Research Desktop (RED), click Conversions > Export OpenSSH key, give the file a name (for example,
putty_rsa
), select a location on your computer to store it, and then click Save.
- Under 'Actions', next to 'Save the generated key', click Save private key.
- Log into the remote system using your account username and password.
If the remote system does not support password-based authentication, you will need to ask system administrators to add your public key to the
~/.ssh/authorized_keys
file in your account (if your account doesn't have~/.ssh/authorized_keys
file, system administrators can create one for you). Once your public key is added to your account's~/.ssh/authorized_keys
file on the remote system... - If your account on the remote system doesn't already contain a
~/.ssh/authorized_keys
file, create one; on the command line, enter the following commands:If your account on the remote system already has
~/.ssh/authorized_keys
, executing these commands will not damage the existing directory or file. - On your computer, in the PuTTYgen utility, copy the contents of the public key (displayed in the area under 'Key') onto your Clipboard. Then, on the remote system, use your favorite text editor to paste it onto a new line in your
~/.ssh/authorized_keys
file, and then save and close the file. - On your computer, open the Pageant SSH authentication agent. This utility runs in the background, so when it opens, you should see its icon displayed in the Windows notification area.
- In the Windows notification area, right-click on the Pageant icon, select Add Key, navigate to the location where you saved your private key (for example,
putty_private_key.ppk
), select the file, and then click Open. - If your private key is passphrase-protected, Pageant will prompt you to enter the passphrase; enter the passphrase for your private key, and then click OK.
If your private key is not passphrase-protected, Pageant will add your private key without prompting you for a passphrase.
Either way, Pageant stores the unencrypted private key in memory for use by PuTTY when you initiate an SSH session to the remote system that has your public key.
- On your computer, open the PuTTY SSH client:
- On the Session screen:
- Under 'Host Name (or IP address)', enter your username coupled with the hostname of the remote server that has your public key; for example:
- Under 'Connection type', make sure SSH is selected.
- In the 'Category' list on the left, navigate to the Auth screen (Connection > SSH > Auth). On the Auth screen, under 'Authentication methods', select Attempt authentication using Pageant.
- Return to the Session screen, and under 'Saved Sessions', enter a name (for example,
Deathstar
), and then click Save. - Click Open to connect to your account on the remote system. With Pageant running in the background, PuTTY will retrieve the unencrypted private key automatically from Pageant and use it to authenticate. Because Pageant has your private key's passphrase saved (if applicable), the remote system will place you on the command line in your account without prompting you for the passphrase.
Technically, at this point, the setup is complete. In the future, whenever you log into your Windows desktop, you can run Pageant, add the private key, and then use PuTTY to SSH to any remote resource that has your public key. Alternatively, you can create a shortcut in your WindowsStartup
folder to launch Pageant and load your private key automatically whenever you log into your desktop. For instructions, finish the rest of the following steps. - On the Session screen:
- Open your
Startup
folder. PressWin-r
, and in the 'Open' field, typeshell:startup
, and then pressEnter
. - Right-click inside the
Startup
folder, and then select New and Shortcut. - In the 'Type the location of the item' text box, enter the path to the Pageant executable (
pageant.exe
) followed by the path to your private key file (for example,putty_private_key.ppk
); enclose both paths in double quotes; for example: - Click Next, and then, in the 'Type a name for this shortcut' text box, enter a name for the shortcut (for example,
PAGEANT
). - Click Finish.
The next time you log into your Windows desktop, Pageant will start automatically, load your private key, and (if applicable) prompt you for the passphrase.