Difference between revisions of "SSH without password"

From knowledgebase
Jump to navigation Jump to search
(Created page with "Your aim You want to use Linux and OpenSSH to automize your tasks. Therefore you need an automatic login from host A / user a to Host B / user b. You don't want to enter any...")
 
 
(6 intermediate revisions by the same user not shown)
Line 6: Line 6:
 
First log in on A as user a and generate a pair of authentication keys. Do not enter a passphrase:
 
First log in on A as user a and generate a pair of authentication keys. Do not enter a passphrase:
  
−
{{{
+
  a@A:~> ssh-keygen -t rsa
−
a@A:~> ssh-keygen -t rsa
+
  Generating public/private rsa key pair.
−
Generating public/private rsa key pair.
+
  Enter file in which to save the key (/home/a/.ssh/id_rsa):  
−
Enter file in which to save the key (/home/a/.ssh/id_rsa):  
+
  Created directory '/home/a/.ssh'.
−
Created directory '/home/a/.ssh'.
+
  Enter passphrase (empty for no passphrase):  
−
Enter passphrase (empty for no passphrase):  
+
  Enter same passphrase again:  
−
Enter same passphrase again:  
+
  Your identification has been saved in /home/a/.ssh/id_rsa.
−
Your identification has been saved in /home/a/.ssh/id_rsa.
+
  Yo ur public key has been saved in /home/a/.ssh/id_rsa.pub.
−
Your public key has been saved in /home/a/.ssh/id_rsa.pub.
+
  The key fingerprint is:
−
The key fingerprint is:
+
  3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A
−
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A
 
−
}}}
 
  
 
Now use ssh to create a directory ~/.ssh as user b on B. (The directory may already exist, which is fine):
 
Now use ssh to create a directory ~/.ssh as user b on B. (The directory may already exist, which is fine):
−
{{{
+
  a@A:~> ssh b@B mkdir -p .ssh
−
a@A:~> ssh b@B mkdir -p .ssh
+
  b@B's password:  
−
b@B's password:  
+
 
−
}}}
 
 
Finally append a's new public key to b@B:.ssh/authorized_keys and enter b's password one last time:
 
Finally append a's new public key to b@B:.ssh/authorized_keys and enter b's password one last time:
  
−
{{{
+
  a@A:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
−
a@A:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
+
  b@B's password:  
−
b@B's password:  
+
 
−
}}}
+
 
 +
If you run ssh on a different port, add it to the  ~/.ssh/config file
 +
 
 +
Host *
 +
  AddKeysToAgent yes
 +
  UseKeychain yes
 +
  IdentityFile ~/.ssh/id_ed25519
 +
  Port 2046
  
 
From now on you can log into B as b from A as a without password:
 
From now on you can log into B as b from A as a without password:
 
[[Category:log]]
 
[[Category:log]]

Latest revision as of 14:01, 22 January 2023

Your aim

You want to use Linux and OpenSSH to automize your tasks. Therefore you need an automatic login from host A / user a to Host B / user b. You don't want to enter any passwords, because you want to call ssh from a within a shell script. How to do it

First log in on A as user a and generate a pair of authentication keys. Do not enter a passphrase:

 a@A:~> ssh-keygen -t rsa
 Generating public/private rsa key pair.
 Enter file in which to save the key (/home/a/.ssh/id_rsa): 
 Created directory '/home/a/.ssh'.
 Enter passphrase (empty for no passphrase): 
 Enter same passphrase again: 
 Your identification has been saved in /home/a/.ssh/id_rsa.
 Yo ur public key has been saved in /home/a/.ssh/id_rsa.pub.
 The key fingerprint is:
 3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A

Now use ssh to create a directory ~/.ssh as user b on B. (The directory may already exist, which is fine):

 a@A:~> ssh b@B mkdir -p .ssh
 b@B's password: 

Finally append a's new public key to b@B:.ssh/authorized_keys and enter b's password one last time:

 a@A:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
 b@B's password: 


If you run ssh on a different port, add it to the ~/.ssh/config file

Host *

 AddKeysToAgent yes
 UseKeychain yes
 IdentityFile ~/.ssh/id_ed25519
 Port 2046

From now on you can log into B as b from A as a without password: