Linux ssh keys permissions

How to set ssh key permissions in linux? Code Example

In order to set ssh key permissions in linux, we first need to know the correct permissions to assign. Without secure permissions your system will be open to attacks. So, let’s first see the different permissions for different entities –

  1. home – It should not be writable by group and others. The maximum permission could be 755. That is, drwx r-x r-x.
  2. .ssh – To keep this directory secure, you need to keep it inaccessible to groups and others. It should be writable by root user only. So, the appropriate permission is 700 i.e. drwx — —.
  3. private key ( id_rsa , id_dsa ) – Should not be accessible to groups and others. Only readable and writable by root user. Permission on private key should be 600 i.e. -rw- — —.
  4. public key ( .pub ) – Public key could be read by all users but should not be writable. Only root user should be allowed to write. Appropriate permission is 644 i.e. -rw- r– r–.
  5. ~/.ssh/authorized_keys – This file is responsible to hold all the public keys allowed to access the user account. The permission for this file should be 600 i.e. -rw- — —.
  6. ~/.ssh/config – This is the configuration file of ssh which defines properties like password authentication, gssapi authentication etc. You need to keep it secure. So strictly it should be 600.

Setting home permission

First check the permissions on your user directory using this command –

It will display the output like this –

drwxr-xr-x 8 akash akash 4096 Sep 24 00:12 /home/akash

If the permissions are different from drwxr-xr-x then update using chmod command –

changing user directory permission to 755

Setting .ssh permission

The .ssh directory holds various files which are required for login. We need to have 700 permission on this directory.

Check the current permissions on this directory –

The output should show the 700 permissions like this –

drwx------ 2 akamit akamit 4096 Sep 24 00:12 /home/akamit/.ssh

If it’s not the same, then update permission –

Читайте также:  1c server linux nethasp ini

checking permissions on .ssh folder which is 700 or drwx------

Setting Private Key Permission

Private key, which is generally represented by id_rsa needs to be very secure because this key is not transferred to anywhere. Unlike public key which can be used by multiple applications, a private key is only used by server for authentication.

The appropriate permission for private key file is 600.

Check the private key permission –

If it’s not -rw- — — then you need to immediately set it 600 because otherwise groups or others may read it.

Setting Public Key Permission

Public key ( *.pub ) files could be shared among applications as it is required to login on server. But alone it can’t help without corresponding private key. That’s why we keep the private key secure and let applications use public key.

The appropriate permission for public key is 644 i.e. -rw- r– r–.

Set it using this command –

Setting authorized_keys Permission

authorized_keys file holds the list of public keys which are allowed to login to the user account. There is not much issue if some application access this file. But it’s always better to have closed permissions. So keep it 600 i.e. -rw- — —.

To check the permission of authorized_keys file –

chmod 0600 ~/.ssh/authorized_keys

Setting Config file Permission

You can locate the config file at ~/.ssh/config . This file holds the configuration parameters of ssh which are very sensitive. You need to have close permissions on this file. So strictly keep it 600.

Conclusion

Setting ssh keys permission is essential because a wrong permission can open your system to unauthorized access. Not only keys, we need to secure multiple directories too. In this article we saw the appropriate permissions to assign to keys and their holding directories.

  • Docker desktop stopped error solution – Code Example
  • How to select single item from list in React Native? Code…
  • Ways to run javascript on your computer – Code Example
  • React Hook “useEffect” is called conditionally – Code…
  • Unable to negotiate with ip:22: no matching host key found -…
  • what utility is equivalent to the pathping command on linux…
  • Git rename local branch – git branch -m oldname newnm – Code…
  • How to create a simple toggle switch in React native? Code…
  • Allocate heap memory to JavaScript in Next.js, Reactjs -…
  • node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28’…
  • valueerror: too many values to unpack (expected 2) – Code…
  • How to hide the status bar in React native? Code Example
  • ReactDOM.render no longer supported. Use createRoot – Code…
  • zero padding to numbers in column str_pad rlang – Code…
  • how to test code in javascript – Code Example
Читайте также:  Горячие клавиши линукс минт смена языка

Источник

Настройка прав для id_rsa (bad permissions)

Установил xfce вместо unity на ubuntu. После чего git fetch начал отдавать такую штуку:

$ git fetch @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for '/home/username/.ssh/id_rsa' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "/home/username/.ssh/id_rsa": bad permissions Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.

Permissions 0644 for ‘~/.ssh/id_rsa’ are too open — т.е. файл ключа id_rsa имеет слишком много прав.

$ ls -la ~/.ssh/ total 24 drwx------ 2 eugeney eugeney 4096 Jun 6 16:42 . drwxr-xr-x 33 eugeney eugeney 4096 Jun 13 12:10 .. -rw-r--r-- 1 eugeney eugeney 1679 Mar 11 2013 id_rsa -rw-r--r-- 1 eugeney eugeney 398 Mar 11 2013 id_rsa.pub -rw-r--r-- 1 eugeney eugeney 5534 Jun 13 10:35 known_hosts

Основная проблема в том, что с такими правами наш ключ могут читать и другие пользователи. Поэтому система обязывает нас изменить права. Запретим другим пользователям читать наш id_rsa, выставив права только для нашего пользователя с помощью команды chmod .

Задаём права 700 либо 600 на приватный ключ ~/.ssh/id_rsa

Теперь у текущего пользователя будут права на запись, чтение и выполнение (цифра 7). А у остальных пользователей не будет никаких прав на этот файл (цифра 0).

600 и 700 оба варианта подходят.

После этого ssh авторизация по ключу должна проходить без ошибок.

Источник

📑 Разрешения файлов директории .SSH

Разрешения файлов директории .ssh, закрытого и публичного ключей (private and public keys)

Если ваши права доступа к файлам директории .SSH были изменены (то есть id_rsa/config), тогда ssh просто игнорирует их использование из соображений безопасности или, в некоторых случаях, выдает ошибку типа:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions XXXX for '/Users/username/.ssh/id_rsa' are too open. It is recommended that your private key files are NOT accessible by others. This private key will be ignored.

Чтобы исправить проблемы с разрешениями, для начала следует установить правильные разрешения на домашнюю директорию и директорию .ssh:

sudo chown -R пользователь:пользователь $HOME sudo chmod 750 $HOME sudo chmod -R 700 $HOME/.ssh

Это создает самые строгие разрешения для всех файлов в .ssh, которые удовлетворят требованиям SSH для этих файлов. Рекомендации и требования SSH (подчеркнуты) для отдельных файлов директории .ssh приведены ниже (со страницы руководства):

Читайте также:  Change linux windows manager

~/.ssh/id_rsa (или любой PRIV KEY — закрытый, первичный ключ) — Эти файлы содержат конфиденциальные данные и должны быть доступны для чтения пользователем, но не доступны для других (чтение/запись) — только 0600. Программа ssh будет просто игнорировать файл закрытого ключа, если он доступен другим.

~/.ssh/config — из-за возможности злоупотребления этот файл должен иметь строгие разрешения: чтение/запись для пользователя и недоступность для других — достаточно установить 0644.

~ /.ssh/authorized_keys — Этот файл не является высокочувствительным, но рекомендуемые разрешения для чтения и записи для пользователя и недоступны для других — 0644.

sudo chmod 644 ~/.ssh/authorized_keys

~ /.ssh/known_hosts — Этот файл не является высокочувствительным, но рекомендуемые разрешения для чтения и записи для пользователя и недоступны для других — 0644.

~/.ssh/ — Нет общего требования хранить все содержимое этого каталога в секрете, но рекомендуемые разрешения для чтения/записи/выполнения для пользователя и недоступны для других — достаточно 0700.

~ / .ssh / id_rsa.pub (ИЛИ ЛЮБОЙ ОТКРЫТЫЙ КЛЮЧ) — Эти файлы не являются конфиденциальными и могут (но не обязательно) быть доступными для чтения любому.

/etc/hosts — он должен быть доступен для записи только пользователю root

Источник

Permissions for .ssh folder and key files

Use the following commands to change the permissions 2 :

sudo chmod 700 ~/.ssh sudo chmod 644 ~/.ssh/id_example.pub sudo chmod 600 ~/.ssh/id_example 

Learn more Linux/Unix commands on file permission: Linux Commands Cheat Sheet.

Summary based on the ssh man page (to show by man ssh ) 3 4 :

+------------------------+-------------------------------------+-------------+-------------+ | Directory or File | Man Page | Recommended | Mandatory | | | | Permissions | Permissions | +------------------------+-------------------------------------+-------------+-------------+ | ~/.ssh/ | There is no general requirement to | 700 | | | | keep the entire contents of this | | | | | directory secret, but the | | | | | recommended permissions are | | | | | read/write/execute for the user, | | | | | and not accessible by others. | | | +------------------------+-------------------------------------+-------------+-------------+ | ~/.ssh/authorized_keys | This file is not highly sensitive, | 600 | | | | but the recommended permissions are | | | | | read/write for the user, and not | | | | | accessible by others | | | +------------------------+-------------------------------------+-------------+-------------+ | ~/.ssh/config | Because of the potential for abuse, | | 600 | | | this file must have strict | | | | | permissions: read/write for the | | | | | user, and not accessible by others. | | | | | It may be group-writable provided | | | | | that the group in question contains | | | | | only the user. | | | +------------------------+-------------------------------------+-------------+-------------+ | ~/.ssh/identity | These files contain sensitive data | | 600 | | ~/.ssh/id_dsa | and should be readable by the user | | | | ~/.ssh/id_rsa | but not accessible by others | | | | | (read/write/execute) | | | +------------------------+-------------------------------------+-------------+-------------+ | ~/.ssh/identity.pub | Contains the public key for | 644 | | | ~/.ssh/id_dsa.pub | authentication. These files are | | | | ~/.ssh/id_rsa.pub | not sensitive and can (but need | | | | | not) be readable by anyone. | | | +------------------------+-------------------------------------+-------------+-------------+ 

Источник

Оцените статью
Adblock
detector