What is the difference between /etc/ssh/ and ~/.ssh?


 
Thread Tools Search this Thread
Special Forums UNIX and Linux Applications What is the difference between /etc/ssh/ and ~/.ssh?
# 1  
Old 04-23-2018
What is the difference between /etc/ssh/ and ~/.ssh?

Hi,

I know the “/etc/ssh” directory is for the ssh daemon and the “~/.ssh” directory is for a particular user.

Both directories contain private and public keys: (see the attachment)

but what is the difference between those keys in both directories? I'm confused because the ones i use as a user, is in my home directory ~/.ssh, and what are the roles of the keys found in /etc/ssh ? for what purpose are they created for ?

Thanks.
What is the difference between /etc/ssh/ and ~/.ssh?-screen-shot-2018-04-23-180806png
# 2  
Old 04-23-2018
The files in /etc/ssh are for the service on the server you are connecting to. it uses them to listen and exchanges keys with the client session so that the data is encrypted.

Your personal keys (as you know in ~/.ssh) provide the reverse.

When you request a connection (before signing on or anything) the server listening (default on port 22) will pass you its public key for the server. This key enables you to encrypt traffic that only the server can decrypt. You can also use this public key to verify that you have connected to the correct server. The first time, you open a connection, you will be asked to confirm the key provided by the server. If you accept, this is stored in ~/.ssh/knwon_hosts so that you can be sure you are connecting the the same server on a later occasion.

See this article for more information - 17.3. Event Sequence of an SSH Connection



I hope that this helps. If not, feel free to ask again.


Kind regards,
Robin
This User Gave Thanks to rbatte1 For This Post:
# 3  
Old 04-23-2018
Oh ok. Now i get it. When i try to connect to a server, the server will send me its public key from/etc/ssh. But what is the purpose of the keys from ~/.ssh ? It seems like they are not used.

Here's the scenerio:

I have two virtual machines open side by side - Server_A and Server_B. I tried to access Server_B from Server_A. Now Server_B will send me its public key from /etc/ssh.

Now the public key of Server_B will be in ~/.ssh/known_hosts file.

Again the keys found in my ~/.ssh directory are not used. I just don't get it.

---------- Post updated at 10:51 PM ---------- Previous update was at 09:45 PM ----------

I did some research, and i've found that if i try to connect to a server with the private and public keys from my ~/.ssh directory i have to copy the public key to server's authorized_keys file (using either ssh-copy-id or scp). Is that correct ?
# 4  
Old 04-23-2018
The next connection will compare the server's public host key with the one in known_hosts.
If different it will warn "host key changed, perhaps a man-in-the-middle attack".
--
To complete your confusion, there is also an optional /etc/ssh/known_hosts. Here the administrator can store public host keys that are valid for all the users on the system, so they do not need to store them in their ~/.ssh/known_hosts.
--
Extra user keys that you put in ~/.ssh/ can be used to replace a password login (enabling a password-less login). The accepted public user keys are stored on the accessing side in ~/ssh/authorized_key (or ~/ssh/authorized_key2, dependent on the ssh version).
This User Gave Thanks to MadeInGermany For This Post:
# 5  
Old 04-23-2018
Quote:
Originally Posted by kavish11
Oh ok. Now i get it. When i try to connect to a server, the server will send me its public key from/etc/ssh. But what is the purpose of the keys from ~/.ssh ? It seems like they are not used.
~/.ssh/known_hosts is used by the client alone, to identify servers the client has connected to before.

~/.ssh/authorized_keys is used by the server being connected to, when you ssh into that user using a key. So in that sense it's still a client setting, though it's the server which must read it.

~/.ssh/id_rsa, ~/.ssh/id_rsa etc are used by a client when connecting to a server. That is the file which the server you're connecting to recognizes via the other end's ~/.ssh/authorized_keys . There's various kinds of possible keys, some obsolete, some modern, so there's actually a few different names ssh will use by default there.

I'm sure there's other things which may end up in ~/.ssh/ also. It's a place for client settings, not something simple and single-purpose.
This User Gave Thanks to Corona688 For This Post:
# 6  
Old 04-24-2018
It all make sense now. Thank you everyone.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Find active SSH servers w/ ssh keys on LAN

Hi, I am trying to complete my bash script in order to find which SSH servers on LAN are still active with the ssh keys, but i am frozen at this step: #!/bin/bash # LAN SSH KEYS DISCOVERY SCRIPT </etc/passwd \ grep /bin/bash | cut -d: -f6 | sudo xargs -i -- sh -c ' && cat... (11 Replies)
Discussion started by: syrius
11 Replies

2. UNIX for Beginners Questions & Answers

Ssh script to validate ssh connection to multiple serves with status

Hi, I want to validate ssh connection one after one for multiple servers..... password less keys already setup but now i want to validate if ssh is working fine or not... I have .sh script like below and i have servers.txt contains all the list of servers #/bin/bash for host in $(cat... (3 Replies)
Discussion started by: sreeram4
3 Replies

3. Shell Programming and Scripting

Check if file exists via ssh in ssh (nested)

I'm using redhat and have an odd issue with a nested ssh call. ssh -i ~/.ssh/transfer-key -q transfer@fserver1 ] && ssh -i ~/.ssh/transfer-key transfer@fserver1 "ssh -i ~/.ssh/sftp-key sftpin@10.0.0.1 ]" && ssh -i ~/.ssh/transfer-key transfer@fserver1 "scp -i ~/.ssh/sftp-key /home/S/outbox/*... (2 Replies)
Discussion started by: say170
2 Replies

4. Shell Programming and Scripting

Ssh = ssh expect and keep everything not change include parameter postion

I have write a script which contains ssh -p 12345 dcplatform@10.125.42.50 ssh 127.0.0.1 -p 5555 "$CMD" ssh root@$GUEST_IP "$CMD" before I use public key, it works well, now I want to change to "expect", BUT I don't want to change above code and "parameter position" I can post a... (1 Reply)
Discussion started by: yanglei_fage
1 Replies

5. Solaris

what is the difference between openssh and ssh package installed with Solaris box

which should i prefer to install in my system openssh or ssh package provided by SUN by default. can i have two packages installed at the same time? (2 Replies)
Discussion started by: chidori
2 Replies

6. Shell Programming and Scripting

Using ssh to add register key on ssh server

Hi, I want to use ssh to add a register key on remote ssh server. Since there are space characters in my register key string, it always failed. If there is no space characters in the string, it worked fine. The following is what I have tried. It seems that "ssh" command doesn't care about double... (9 Replies)
Discussion started by: leaftree
9 Replies

7. Shell Programming and Scripting

could not send commands SSH session with Net::SSH::Expect

I am using Net::SSH::Expect to connect to the device(iLO) with SSH. After the $ssh->login() I'm able to view the prompt, but not able to send any coommands. With the putty I can connect to the device and execute the commands without any issues. Here is the sample script my $ssh =... (0 Replies)
Discussion started by: hansini
0 Replies

8. UNIX for Advanced & Expert Users

difference between logging into unix through f-secure ssh client and telnet

hi, what is the difference between logging into unix through f-secure ssh client and telnet is there any more security check is involved can any one explain thanks in advance (1 Reply)
Discussion started by: trichyselva
1 Replies

9. Cybersecurity

What's the difference between an SSH Client and an SSH Server?

Eh... yeah. What the title says. :D (1 Reply)
Discussion started by: PSC
1 Replies
Login or Register to Ask a Question