Ubuntu Server에서 새 SSH 사용자 생성


104

방금 새로운 가상 Ubuntu 서버를 만들었고 프로덕션 용으로 강화하는 중입니다. 현재 루트 계정이 있습니다. 나는 다음을하고 싶다 :

  • 새 사용자를 작성하십시오 ( jim나머지는이를 호출 하십시오). 나는 그들이 /home/디렉토리 를 갖고 싶어 .
  • 부여 jimSSH 액세스.
  • 루팅 jimsu수 있지만 sudo작업은 수행 할 수 없습니다 .
  • 루트 SSH 액세스를 끕니다.
  • SSHd를 비표준 포트로 옮기면 무차별 공격을 막을 수 있습니다.

내 문제는 처음 두 항목에 있습니다. 이미 찾았 useradd지만 어떤 이유로 SSH를 통해 만든 사용자로 로그인 할 수 없습니다. 이것을 허용하려면 SSHd를 이겨야합니까?


안녕하세요! 서버에서 당신을 도울 수 있습니다 .SSH의 문제가 무엇인지 모르겠습니다. 기본 설정을 사용하면 연결이 거부되지 않기 때문입니다. man 5 nologin을 볼 수 있습니다. / etc / nologin이 있으면 루트로만 로그인 할 수 있습니다. 정상적으로 로그인을 시도한 후 결과를 작성하십시오.
antivirtel

사용자의 쉘은 무엇입니까? / bin / bash입니까? / etc / password에서 확인하십시오. / dev / null 또는 / bin / false가 아닌지 확인하십시오.
LFC_fan

예 LFC_fan 또는 / etc / nologin도 있습니다. (sudo) cat / etc / passwd 사용 | grep jim
antivirtel

1
@비. 롤랜드 /etc/nologin파일이 있지만 비어 있습니다. 삭제하고 ssh를 다시 시작했지만 Permission denied, please try again.로그인을 시도 할 때 여전히 응답 합니다.
Oli

@LFC_fan 그것은 / bin / bash입니다
Oli

답변:


99

루트로 편집하십시오 /etc/ssh/sshd_config. 다음을 추가하십시오.

Port 1234
PermitRootLogin no
AllowUsers jim

Port 12341에서 65535 사이의 사용하지 않는 포트를 사용할 수 있습니다. 루트에서만 사용할 수있는 권한있는 포트 (포트 1-1024)를 선택하는 것이 좋습니다. 어떤 이유로 SSH 데몬의 작동이 중지되면 불량 응용 프로그램이 연결을 가로 챌 수 없습니다.

PermitRootLogin 직접 루트 로그인을 허용하지 않습니다.

AllowUsers jim사용자 jim가 SSH를 통해 로그인 할 수 있습니다 . 어디에서나 로그인 할 필요가없는 경우 jim을 IP 주소로 제한하여보다 안전하게 만들 수 있습니다 (실제 IP 주소로 1.2.3.4를 대체).

AllowUsers jim@1.2.3.4

구성 파일에 대한 변경 사항이 /etc/ssh/sshd_config즉시 적용되지 않고 구성을 다시로드하려면 다음을 실행하십시오.

sudo service ssh reload

10
+1 : 참고 :이 지침은 최신 버전의 Ubuntu (예 : 13.04)에도 적용됩니다. 당신이 원하는 않는 경우 root, 로그인을하지만, (아마도 당신은 여전히 서버를 설정하는), 당신은 설정해야합니다 PermitRootLogin으로 yes도 추가 rootAllowUsers.
JRG-Developer

4
이 사용자의 비밀번호는 무엇입니까?
Wolfpack'08

내 VPS에는 포트 22에 SSH 로그인을위한 루트 비밀번호가 제공됩니다. sshd_config에 응답을 추가하면 루트에 로그인 할 수 없습니다. 이는 포트 22를 jim에 사용했거나 다른 이유가 있습니까?
Wolfpack'08

1
난 그냥 우분투에 새로운 사용자를 추가 발견했습니다 @Lekensteyn 자체가 해당 사용자에 대한 SSH 계정을 만들고 .... useradd -m -G sudo,adm -s /bin/bash mecharokpasswd mecharok
Wolfpack'08

3
@ Wolfpack'08 AllowUsers username1,username2SSH 로그인을 해당 사용자로 제한하는 데 사용하십시오 . sshd다시로드 되었는지 확인하십시오 . 도움이되지 않으면 새로운 질문을 작성하십시오.
Lekensteyn

96

SSH는 디렉토리 및 파일 권한에 매우 까다 롭습니다. 다음을 확인하십시오.

  1. /home/username/.ssh 디렉토리에는 "700"권한이 있으며 사용자가 소유하고 있습니다 (루트 아님).
  2. / home / username / ssh / authorized_keys는 "600"권한을 가지며 사용자가 소유합니다.

공개 키를 certified_keys 파일에 복사하십시오.

sudo chown -R username:username /home/username/.ssh
sudo chmod 0700 /home/username/.ssh
sudo chmod 0600 /home/username/.ssh/authorized_keys

/ etc / ssh / ssh_config에 사용자를 추가 할 필요 가 없습니다 .


1
내 문제는 혼란스럽고 ~./ssh루트로 만들었 으며 사용자에게 소유권을 부여하지 않았습니다.
Gerve

1
내 문제는 내가 /root/.ssh/authorized_keys대신 사용하려고한다는 것입니다 /home/bob/.ssh/authorized_keys.
Alex W

확인할 수 있습니다 : VPS 호스팅에서 편집 할 필요가 없습니다 ssh_config. 해당 디렉토리와 파일을 설정하면 충분합니다.
superjos

2
나를 위해 그것은 chmod 755 /home/username/.ssh 여야했습니다. 그렇지 않으면 작동하지 않습니다.
Jim W

사용자 (또는 sudo su --login {user}) 로 로그인 하고 실행 ssh-keygen-> ".ssh"폴더, 키 + 인증서 및 권한이 훨씬 쉽습니다 . 지침에 따라 authorized_keys를 만드십시오.
bshea

13

/var/log/auth.logSSH (또는 PAM)가 로그인 시도를 거부하는 이유 에 대한 단서가 있습니다 . ssh 클라이언트 -v와 함께 옵션을 사용하여 추가 힌트를 찾을 수 있습니다 . 몇 가지 일반적인 상황은 다른 답변에서 언급했습니다.

  • 사용자 계정에 비밀번호가 없거나 사용하지 않도록 설정되어 있습니다 ( man passwd비밀번호 재설정 또는의 내용 확인 참조 /etc/shadow).
  • /etc/ssh/sshd_config로그인을 허용하도록 구성되어 있습니다 ( DenyUsers, AllowUsers, PasswordAuthentication, PubkeyAuthentication, UsePAM등 참조 man sshd_config).
  • 사용자의 쉘이에 나열되어 있지 않습니다 /etc/shells.
  • : SSH의 운영과 관련된 디렉토리 나 파일에 다양한 권한 문제 /etc/ssh, /home/jim/.ssh, /home/jim/.ssh/*, 등

새 사용자를 추가하기 위해 useradd 대신 adduser를 사용하는 것이 좋습니다 . 다양한 기본 계정 설정에 대해 조금 더 친숙합니다.

사용자가 admin그룹에 속하지 않는 한 root 로 sudo 할 수 없습니다 . 이를 사용하려면 셔서 , 당신은 루트 암호 (설정해야합니다 passwd root내가 설정하는 것이 좋습니다 후) PermitRootLogin=no에서를 /etc/ssh/sshd_config.


특별히 "adduser"가 많은 도움을주었습니다.
vishal.biyani

11

나는 틀릴 수 있지만 항상 (데스크톱에서) ssh가 기본적으로 설치되지만 클라이언트 일뿐이므로 서버 데몬을 설치해야합니다.

이 명령은 서버를 설치합니다

sudo apt-get install openssh-server

편집하여 포트를 변경하고 루트 로그인을 중지 할 수 있습니다

/etc/ssh/sshd_config

그래도 서비스를 다시 시작해야합니다.

sudo service ssh restart


이것은 가상 서버 (VPS)이므로 SSH가 기본적으로 설치됩니다. 서버에 대한 유일한 인터페이스입니다. 그리고 sudo /etc/init.d/ssh reload대신 정보 를 다시로드 할 수 있지만 좋은 정보입니다.
Oli

8

비밀번호를 설정하기 전까지는 Jim에게 SSH 액세스 권한이 없습니다. 루트 실행으로 :

grep -i "jim" /etc/shadow | awk -F':' '{ print $2 }'

이 명령이 "!"를 리턴하면 이 계정에서 문자를 입력 한 다음 로그인을 사용할 수 없습니다. passwd jimroot로 실행 하면 새 확인 된 암호 문자열을 입력하라는 메시지가 표시되고 그 후에 위의 grep 명령은 jim의 암호를 나타내는 해시 문자열을 반환해야합니다.

또한 jim에 기본적으로 설정된 로그인 쉘과 홈 디렉토리가 있는지 확인하십시오.

SSH 서버 설정 수정에 대한 정보는 lekensteyn의 게시물을 참고하십시오.


"이 명령이"! "문자를 반환하면이 계정에 대해 로그인이 비활성화 된 것입니다."이것은 SSH를 사용할 수 없음을 의미하지는 않습니다. 비밀번호로는 (공개 키로) 할 수 없습니다.
bfontaine

3

제 경우에는 액세스가 허용 된 그룹이 있었고 사용자는 그 그룹에 속하지 않았습니다. 이것은 나를 위해 해결했습니다.

위의 예를 사용자 jim와 함께 사용하고 그룹의 구성원 jim만 그룹으로 가정 ( 사용자 가 속한 그룹 을 찾기 위해 groups로그인하는 동안 명령 실행 jim) 내 /etc/ssh/sshd_config파일에는 AllowGroups sshusers항목 이 있었 으므로 그룹 에 추가 jim해야했습니다 sshusers. 아래는 이것이 어떻게 달성되는지입니다 :

usermod -a -G sshusers jim

구성에 맞게 그룹과 사용자를 교체하십시오.


1
예를 더 잘 설명하는 출처를 참조하거나 OP의 원래 질문을 근거로 예를 들어 관련 정보를 추가하여 답변을 개선해야합니다. 예를 들어, 사용자 jim는 컨텍스트를 제공하기 위해 더미 사용자로 지정 되었습니다. 여기 에 기사 가 잘 설명되어 있습니다.

0

PasswordAuthentication기본적으로 사용 중지 된 일부 인스턴스가있을 수 있습니다 .

속성이로 설정되어 /etc/ssh/sshd_config있는지 확인 하고 확인 하십시오 .PasswordAuthenticationyes


0

@Lekensteyn 명성이 없기 때문에 질문 답변에 의견을 남길 수 없습니다.

AllowUsers existingUser,newUser

내 / etc / ssh / sshd_config 파일에 이제 더 이상 기존 사용자 또는 newUser로 ssh를 할 수 없습니다.


나는 당신의 고통을 이해합니다 : DI는 한 번 같은 문제가있었습니다. 해결책 : AllowUsers existingUser@* newUser@*
İsmail Atkurt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.