как создать ключ ssh для другого пользователя?

90

Я пытаюсь создать ключ ssh для другого пользователя. Я вошел как root. Могу ли я просто отредактировать файлы, созданные с помощью ssh-keygen, и изменить пользователя root на нужного мне пользователя?

user962449
источник
5
Если вы генерируете ключ для пользователя, у вас также должен быть безопасный способ получения закрытого ключа и его парольной фразы для пользователя. Намного лучше, если пользователь сгенерирует ключ и просто отправит вам открытый ключ по электронной почте.
user9517 22.10.11
Но разве это не сложно? Вы не разрешаете вход в систему с паролем? Если я использую только ключи и настроил нового пользователя, он не сможет войти, чтобы настроить свой ключ.
LVLAaron

Ответы:

79

Вы можете сделать это ssh-keygen, однако, помните, что закрытый ключ должен быть закрытым для пользователя, поэтому вы должны быть очень осторожны, чтобы сохранить его в безопасности - так же, как пароль пользователя. Или даже безопаснее, поскольку от пользователя не требуется менять его при первом входе в систему.

ssh-keygen -f anythingсоздает два файла в текущем каталоге. anything.pubэто открытый ключ, который вы можете добавить к пользователю ~/.ssh/authorized_keysна любом сервере назначения.

Другой файл, который только что был назван, anythingявляется закрытым ключом, и поэтому его следует безопасно хранить для пользователя. Местоположение по умолчанию будет ~username/.ssh/id_rsa(здесь названо id_rsa, которое по умолчанию для ключей rsa). Помните, что .sshкаталог не может быть доступен для чтения или записи никем, кроме пользователя, а домашний каталог пользователя не может быть доступен для записи никем, кроме пользователя. Аналогично, права доступа должны быть ограничены и для закрытого ключа: чтение и запись только для пользователя, а каталог .ssh и закрытый ключевой файл должны принадлежать пользователю.

Технически вы можете хранить ключ где угодно. При этом ssh -i path/to/privatekeyвы можете указать это местоположение при подключении. Опять же, правильное владение и разрешения имеют решающее значение, и ssh не будет работать, если у вас нет прав.

сть
источник
4
+1 за выражение того, что это закрытый (!) Ключ
mailq 22.10.11
51
Вы предполагаете, что пользователь - реальный человек. Если логин является неинтерактивным пользователем, используемым для выполнения служебных задач (например, запуска мейн-скриптов на удаленных серверах), тогда да, вы, вероятно, сгенерируете ключ для этого пользователя вручную. Конечно, это имеет свои последствия для безопасности, но это уже другая история.
Рилиндо
2
@Rilindo ssh -iк закрытому ключу для непривилегированного процесса - это то, как я управляю более чем несколькими автоматическими процессами резервного копирования rsync. :)
Шадур
9
Мне не нравится такой ответ, который говорит «ты не должен этого делать», но не отвечай на вопрос. Хотя это может быть правильным и полезным для контекста исходного вопроса, другие люди могут иметь тот же вопрос в другой ситуации. «Ключи ssh никогда не должны генерироваться для другого пользователя»: это верно в простом случае. Но, например, рассмотрим несколько личностей одного и того же физического лица. В разных системах может быть несколько учетных записей, но не все из них позволяют генерировать ключи или позволяют надлежащим образом защищать закрытые ключи.
Гюстав
usersилиuser's
пользователь
135

Там нет пользовательской информации в ключах SSH .

Последнее поле в открытом ключе является комментарием (и может быть изменено с помощью следующей команды ssh-keygen -C newcomment).

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

Alex
источник
5
Это правильный ответ.
Себнукем
1
Я просто протестировал и подтвердил, что это не только комментарий, но его можно удалить, а ключи по-прежнему функционируют. Я всегда думал, что это имеет значение! Спасибо за правильный ответ. Как и в комментариях выше, у меня есть причина для создания ключей для других пользователей, но я не буду говорить почему, поэтому нет никаких аргументов.
FreeSoftwareServers
18

Станьте пользователем с помощью su и запустите ключ от имени этого пользователя:

[root@kvm0001 ~]# su - joeuser
[joeuser@kvm0001 ~]$ ssh-keygen -t dsa (or rsa1 or rsa, depending on your security requirements)
Generating public/private dsa key pair.
Enter file in which to save the key (/home/joeuser/.ssh/id_dsa):
Rilindo
источник
Зачем указывать DSA?
Рам
Упс, сила привычки. Позвольте мне обновить.
Рилиндо
4
Вы должны использовать rsa (или, возможно, один из вариантов эллиптической кривой). dsa ограничен небезопасными размерами ключей. rsa1 - это устаревший формат для ssh1, который больше никто не должен использовать.
Питер Грин
Мой joeuserпользователь службы, поэтому я не могу войти как они. Как мне разрешить пользователю службы (который просто запускает процессы) иметь ключ ssh?
Джонатан
@JonathanLeaders Вы должны указать оболочку для пользователя, когда станете этим пользователем. Примерно так: `` `[root @ ip-10-254-41-211 ~] # grep ftp / etc / passwd ftp: x: 14: 50: Пользователь FTP: / var / ftp: / sbin / nologin [root @ ip-10-254-41-211 ~] # su - ftp su: предупреждение: невозможно изменить каталог на / var / ftp: такого файла или каталога нет. Эта учетная запись в настоящее время недоступна. [root @ ip-10-254-41-211 ~] # su -s / bin / bash ftp bash-4.2 $ whoami ftp bash-4.2 $ `` `
Rilindo
6

Как видно здесь , вы можете использовать chmod для изменения прав на чтение папки пользователя, к которому вы хотите добавить ключ SSH.

vim /home/username/.ssh/authorized_keys

Затем просто вставьте ключ в новую строку в нижней части этого файла

Джастин Ковальский
источник
1
Ссылка мертва ...
Nyxynyx