다른 사용자를위한 ssh 키를 어떻게 작성합니까?


89

다른 사용자를 위해 ssh 키를 만들려고합니다. 루트로 로그인했습니다. ssh-keygen에 의해 생성 된 파일을 편집하고 루트를 원하는 사용자로 변경할 수 있습니까?


5
사용자의 키를 생성하는 경우 개인 키를 얻는 안전한 방법이 있어야하며 사용자에게 암호를 전달해야합니다. 사용자가 키를 생성 한 다음 공개 키를 이메일로 보내는 것이 훨씬 좋습니다.
user9517

그러나 비밀번호 로그인을 허용하지 않는 것이 어렵지 않습니까? 키 전용이고 새 사용자를 설정하면 로그인하여 키를 설정할 수 없습니다.
LVLAaron

답변:


79

당신은에 그렇게 할 수 ssh-keygen있지만, 개인 키는 당신이 사용자의 암호와 안전 안전 - 유지하는 것은 매우 신중해야하므로 사용자에게 개인으로 의미가 있음을 기억하십시오. 또는 처음 로그인 할 때 사용자를 변경할 필요가 없으므로 더 안전합니다.

ssh-keygen -f anything현재 디렉토리에 두 개의 파일을 작성합니다. anything.pub공개 키이며 ~/.ssh/authorized_keys대상 서버 의 사용자에게 추가 할 수 있습니다.

방금 불리는 다른 파일 anything은 개인 키이므로 사용자를 위해 안전하게 저장해야합니다. 기본 위치는 ~username/.ssh/id_rsa여기서 id_rsarsa 키의 기본값 인으로 지정 됩니다. .ssh사용자 이외의 다른 사람 이 디렉토리를 읽거나 쓸 수 없으며, 사용자의 홈 디렉토리는 사용자 이외의 사람이 쓸 수 없습니다. 마찬가지로 개인 키에 대한 권한도 엄격해야합니다. 사용자에 대한 읽기 / 쓰기 및 .ssh 디렉토리 및 개인 키 파일은 사용자가 소유해야합니다.

기술적으로 키를 어디에나 저장할 수 있습니다. 연결 ssh -i path/to/privatekey하면 해당 위치를 지정할 수 있습니다. 다시 한 번, 적절한 소유권과 권한이 중요하며 권한이 없으면 ssh가 작동하지 않습니다.


4
개인 키임을 나타내는 +1
mailq

51
사용자가 실제 사람이라고 가정합니다. 로그인이 유틸리티 작업 (예 : 원격 서버에서 기본 스크립트 실행)을 수행하는 데 사용되는 비 대화식 사용자 인 경우 예, 해당 사용자의 키를 수동으로 생성 할 수 있습니다. 물론 이것은 자체 보안에 영향을 미치지 만 또 다른 이야기입니다.
Rilindo

2
ssh -i비 권한 프로세스의 개인 키에 @Rilindo 를 사용하면 몇 가지 자동 rsync 백업 프로세스를 처리하는 방법이 있습니다. :)
Shadur

9
나는 "그렇게하지 말아야한다"라는 대답을 좋아하지 않지만 질문에 대답하지는 않습니다. 이것이 원래의 질문의 맥락에서 정확하고 도움이 될 수 있지만 다른 사람들은 다른 상황에서 동일한 질문을 가질 수 있습니다. "다른 사용자를 위해 ssh 키를 생성해서는 안됩니다": 간단한 경우에 해당됩니다. 그러나 예를 들어, 동일한 육체의 여러 정체성을 고려하십시오. 여러 시스템에 여러 개의 계정이있을 수 있지만 모든 계정에서 키를 생성하거나 개인 키를 적절하게 보호 할 수있는 것은 아닙니다.
Gustave

users또는user's
사용자

135

SSH 키에는 사용자 정보없습니다 .

공개 키의 마지막 필드는 주석입니다 (다음 명령을 실행하여 변경할 수 있음 ssh-keygen -C newcomment).

다른 사용자를 위해 키를 만들기 위해 특별한 조치를 취할 필요가 없습니다. 올바른 위치에 키를 넣고 권한을 설정하십시오.


5
정답입니다.
sebnukem

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):

왜 DSA를 지정해야합니까?
Ram

으악, 습관의 힘. 업데이트하겠습니다.
Rilindo

4
rsa (또는 타원 곡선 변형 중 하나)를 사용해야합니다. dsa는 안전하지 않은 키 크기로 제한됩니다. rsa1은 더 이상 사용하지 않아야하는 ssh1의 레거시 형식입니다.
Peter Green

My joeuser는 서비스 사용자이므로 로그인 할 수 없습니다. 프로세스를 실행하는 서비스 사용자가 ssh 키를 가지도록하려면 어떻게해야합니까?
조나단

@JonathanLeaders 해당 사용자가 될 때 사용자의 쉘을 지정합니다. ```[root @ ip-10-254-41-211 ~] # grep ftp / etc / passwd ftp : x : 14 : 50 : FTP 사용자 : / var / ftp : / sbin / nologin [루트 @ 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.