Я пытаюсь создать ключ ssh для другого пользователя. Я вошел как root. Могу ли я просто отредактировать файлы, созданные с помощью ssh-keygen, и изменить пользователя root на нужного мне пользователя?
Если вы генерируете ключ для пользователя, у вас также должен быть безопасный способ получения закрытого ключа и его парольной фразы для пользователя. Намного лучше, если пользователь сгенерирует ключ и просто отправит вам открытый ключ по электронной почте.
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 не будет работать, если у вас нет прав.
Вы предполагаете, что пользователь - реальный человек. Если логин является неинтерактивным пользователем, используемым для выполнения служебных задач (например, запуска мейн-скриптов на удаленных серверах), тогда да, вы, вероятно, сгенерируете ключ для этого пользователя вручную. Конечно, это имеет свои последствия для безопасности, но это уже другая история.
Рилиндо
2
@Rilindo ssh -iк закрытому ключу для непривилегированного процесса - это то, как я управляю более чем несколькими автоматическими процессами резервного копирования rsync. :)
Шадур
9
Мне не нравится такой ответ, который говорит «ты не должен этого делать», но не отвечай на вопрос. Хотя это может быть правильным и полезным для контекста исходного вопроса, другие люди могут иметь тот же вопрос в другой ситуации. «Ключи ssh никогда не должны генерироваться для другого пользователя»: это верно в простом случае. Но, например, рассмотрим несколько личностей одного и того же физического лица. В разных системах может быть несколько учетных записей, но не все из них позволяют генерировать ключи или позволяют надлежащим образом защищать закрытые ключи.
Гюстав
usersилиuser's
пользователь
135
Там нет пользовательской информации в ключах SSH .
Последнее поле в открытом ключе является комментарием (и может быть изменено с помощью следующей команды ssh-keygen -C newcomment).
Не нужно делать ничего особенного, чтобы сделать ключ для другого пользователя, просто поместите его в нужное место и установите разрешения.
Я просто протестировал и подтвердил, что это не только комментарий, но его можно удалить, а ключи по-прежнему функционируют. Я всегда думал, что это имеет значение! Спасибо за правильный ответ. Как и в комментариях выше, у меня есть причина для создания ключей для других пользователей, но я не буду говорить почему, поэтому нет никаких аргументов.
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):
Вы должны использовать 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
Затем просто вставьте ключ в новую строку в нижней части этого файла
Ответы:
Вы можете сделать это
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 не будет работать, если у вас нет прав.источник
ssh -i
к закрытому ключу для непривилегированного процесса - это то, как я управляю более чем несколькими автоматическими процессами резервного копирования rsync. :)users
илиuser's
Там нет пользовательской информации в ключах SSH .
Последнее поле в открытом ключе является комментарием (и может быть изменено с помощью следующей команды
ssh-keygen -C newcomment
).Не нужно делать ничего особенного, чтобы сделать ключ для другого пользователя, просто поместите его в нужное место и установите разрешения.
источник
Станьте пользователем с помощью su и запустите ключ от имени этого пользователя:
источник
joeuser
пользователь службы, поэтому я не могу войти как они. Как мне разрешить пользователю службы (который просто запускает процессы) иметь ключ ssh?Как видно здесь , вы можете использовать chmod для изменения прав на чтение папки пользователя, к которому вы хотите добавить ключ SSH.
Затем просто вставьте ключ в новую строку в нижней части этого файла
источник