하나의 IP 주소에서만 루트 로그인 허용


14

나는 centos5가 있습니다.

특정 IP 주소에서만 루트 사용자로 내 vps 서버에 로그인 할 수있는 방법이 있습니까?

개인 키를 사용하여 sshd에 로그인 할 수 있다는 것을 읽었습니다. 그러나 문제는 모든 웹리스트에 SFTP를 사용하고 있으며 IT 사용자가 아닌 사용자가 키를 사용하여 SFTP에 로그인하는 것을 원하지 않습니다.

또는 루트 만 키를 사용하여 쉘에 로그인 할 수 있지만 다른 사람에게는 일반 비밀번호를 사용할 수있는 방법이 있습니까?

centos  root  ssh 

답변:


15

더 나은 방법은 이제 일치 키워드를 사용하는 것입니다.

Match Host myworkstation
        PermitRootLogin yes

또는

Match Address 192.168.1.100
        PermitRootLogin yes

그렇게하면 PermitRootLogin을 'no'로 설정 한 채로 둘 수 있지만 여전히 워크 스테이션에서 루트로 로그인 할 수 있습니다.

예를 들어 루트가 두 호스트간에 데이터를 재 동기화하는 데 사용될 수도 있습니다.


귀하의 rsync 예제는 정확히이 질문에 대한 유스 케이스입니다. 감사합니다! ;)
1 월

소스 IP 주소의 역방향 DNS를 사용하는 경우에만 작동합니다. (적어도 나를 위해 유일한 방법이었다)
mveroone

9

일반적으로 권한이없는 사용자로 로그인 한 다음 'su-'또는 'sudo'를 사용하여 루트 권한을 얻는 것이 더 좋습니다.

~ root / .ssh / authorized_keys에 항상 키에 대한 IP 제한을 둘 수 있습니다.

from="192.168.1.100" ssh-rsa AAAAh9uif...auwehuf== yourkey@yourhost.com

그러면 192.168.1.100의 yourkey@yourhost.com 키만 ssh에서 사용할 수 있습니다.


sftp, rsync, sshfs와 같은 작업에는 더 복잡하지만 합의에 동의했습니다.
mveroone

3

사용하다:

비밀번호없이 로그인 허용

/ etc / ssh / sshd_config에서 루트를 제외한 모든 사용자는 비밀번호 로그인을 사용할 수 있습니다. 루트는 키를 사용하여 로그인해야합니다.


이 용해가 효과가 있습니까? 당신은 이것을 시도 했습니까

유지 관리하는 모든 서버에서 해당 설정을 사용합니다. 그것은 루트 무차별 대항 공격을 방지합니다. unixhelp.ed.ac.uk/CGI/man-cgi?sshd_config+5
rubiojr

이 깰 것 같다 git pull하지만 :은 / etc / SSH / ssh_config를 : 라인 68 : 잘못된 구성 옵션 :에서 PermitRootLogin
geoidesic

또한 PermitRootLogin이 표시되지 않습니다man ssh_config
geoidesic

ssh -o PreferredAuthentications=password
geoidesic

2

편집 sshd_config(보통의 /etc/ssh) 추가하거나 다음과 같은 지침을 변경

  PermitRootLogin yes
  AllowUsers root@thehosttoallow

그런 다음 데몬을 다시 시작하십시오.

  service ssh restart

OP가 사용하려면 AllowUsers액세스하려는 모든 사용자를 지정해야한다고 생각합니다. 귀하의 예는 ssh를 통해서만 루트 인증을 허용합니다.
EEAA

1
예, 이것은 의도적 인 것입니다. 모든 사용자를 허용하려면 *@thehosttoallow실제로 모든 사용자를 허용하십시오 .
Ring Ø

ssh -o PreferredAuthentications=password
geoidesic

0

첫째, 사용자가 키 인증을 사용하지 못하게하려는 이유는 무엇입니까? 그건 말이되지 않습니다.

둘째, ssh를 통한 루트 로그인을 허용하지 마십시오. 그렇게하지 마십시오. 그렇게해야 할 이유가 없습니다. 그것은 모든 모범 사례와 반대되는 이유가 있습니다. 특정 파일을 읽고 쓸 수있는 권한을 부여해야하는 경우 표준 Linux 파일 시스템 권한을 통해 권한을 부여 할 수 있습니다. 보다 세분화 된 액세스 제어가 필요한 경우 Linux ACL 시스템을 살펴보십시오.


루트 로그인을 비활성화하고 어떤 사용자도 일부 기본 구성 파일에 액세스 할 수없는 경우 어떻게해야합니까? 그런 다음 루트를 통해 로그인 할 수 없으므로 잠겨 있습니다

1
ssh를 통한 루트 로그인을 비활성화하면 루트는 콘솔을 통해 여전히 로그인 할 수 있습니다. 또한 항상 sudo를 통해 일반 사용자 root-esque 권한을 부여 할 수 있습니다. 이것은 sftp에서는 작동하지 않지만 문제를 해결 해야하는 경우의 장애 복구로 작동하며 권한을 부여하는 기본 방법입니다.
EEAA

1
@ErikA 고유 한 호스트 root에서 허용 해도 안전하지 않습니다. 몇 년 전에는 액세스 에 반대하는 경향이 있었지만 ( 일반적인 경우는 많음 ) 한 호스트 에만 비아 를 허용 하는 것이 안전하지 않은 것으로 보입니다. roottelnetsshrootssh
반지 Ø

물론, 아마도 "안전한"것일 수도 있지만, 여전히 그것이 잘못된 생각이라고 주장 할 것입니다. 나는 주로 사람들이 루트 액세스 권한을 얻는 쉬운 방법이 주어지면 더 안전하고 적절한 액세스 권한을 얻는 대신 스도를 사용한다는 사실에 기인합니다.
EEAA

2
저자 질문을 고려할 때, root사용자를 통해 관리 작업을 수행하려고한다고 가정 할 수 있습니다 . root이 경우 한 호스트에서만 직접 액세스를 허용 하는 것이 합리적인 대안입니다.
반지 Ø
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.