Ubuntu 14.04 x64 운영 체제를 실행하는 서버가 있습니다.
내 파일의 일부 sshd_config
(전체 파일):
Port 2202
Protocol 2
PermitRootLogin without-password
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile /etc/ssh/keys/%u/authorized_keys
RhostsRSAAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
#PasswordAuthentication yes
UsePAM yes
폴더 내에서 /etc/ssh/keys
각 시스템 사용자는 다음 파일을 포함하는 자신만의 폴더를 갖습니다 authorized_keys
.
ls -l /etc/ssh/keys
drw------- 2 test.com test.com 4096 Nov 20 06:53 test.com
drw------- 2 root root 4096 Nov 20 02:29 root
다음 Authorized_keys 파일에 대한 권한이 올바릅니다.
ls -l /etc/ssh/keys/*
/etc/ssh/keys/test.com:
total 4
-r-------- 1 test.com test.com 960 Nov 20 07:17 authorized_keys
/etc/ssh/keys/root:
total 4
-r-------- 1 root root 395 Nov 20 02:29 authorized_keys
루트 및 test.com에 대한 Authorized_keys 파일에 동일한 공개 id_rsa가 있습니다.
SSH를 통해 루트로 로그인할 수 있지만 test.com을 사용할 때 비밀번호를 묻는 메시지가 나타납니다.
test.com 사용자에게 연결을 시도할 때의 디버그 정보는 다음과 같습니다.
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/Ivan/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /Users/Ivan/.ssh/id_dsa
debug1: Next authentication method: password
루트로 로그인하려고 하면 성공합니다.
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/Ivan/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
나는 많은 것을 구글링했다. 내 문제를 해결하는 것을 찾을 수 없습니다.
시스템 사용자를 생성하는 명령을 사용하는 스크립트가 있는데 useradd
기본적으로 이러한 사용자에게는 암호가 없습니다. 비밀번호가 없는 시스템 사용자는 ssh를 통해 로그인하지 못할 수도 있다는 사실을 알고 test.com 사용자에게 비밀번호를 추가했습니다. 쓸모 없는.
UsePAM yes
이것이 문제가 될 수 있다고 봅니다 . 나는 그것을 UsePAM no
아무 소용이 없도록 설정했습니다.
예, service ssh restart
파일을 변경할 때마다 이 작업을 수행했습니다 sshd_config
.
나는 모든 것을 시도했지만 지금은 아무것도 모른다고 생각합니다.
어떤 도움이라도 대단히 감사하겠습니다!
답변1
나도 같은 문제가 있었고 SELinux가 /usr/bin/sshd
특정 사용자에 원격으로 액세스하려고 할 때 읽기 액세스를 차단했다는 사실을 발견했습니다. 일반적으로 실행할 /home/
수 있습니다.
cat /var/log/messages | grep -i ssh
대상 서버에서, 오류를 나타내는 줄이 표시됩니다.
<Date/Time> <hostname> python: SELinux is preventing /usr/sbin/sshd from read access on the file authorized_keys.#012#012***** Plugin catchall (100. confidence) suggests **************************#012#012
If you believe that sshd should be allowed read access on the authorized_keys file by default.#012Then you should report this as a bug.#012
You can generate a local policy module to allow this access.#012Do#012allow this access for now by executing:#012#
ausearch -c 'sshd' --raw | audit2allow -M my-sshd#012# semodule -i my-sshd.pp#012`
SSH 연결을 허용하도록 SELinux 권한을 편집하거나 간단히 꺼서(보안 수준이 낮음) 이 문제를 해결할 수 있습니다.
답변2
sshd는 권한에 있어서 매우 까다롭습니다!
디렉토리 권한이 /etc/ssh/keys/test.com/
잘못된 것 같습니다! 이 디렉터리는 현재 읽기/쓰기가 가능하지만 액세스하지 못할 수도 있습니다.
chmod u+x /etc/ssh/keys/test.com/ && chmod o+rx /etc/ssh/keys
문제가 해결될 것입니다. 루트는 디렉토리에 들어갈 수 있지만 sshd는 authenticate_keys 파일 자체에서 0700
또는 0755
+의 8진수 권한을 확인한다고 가정합니다. 0600
특히, StrictMode yes
.
디렉토리에 대한 액세스 및 적절한 권한이 없으면 sshd는 보안상의 이유로authorized_keys 파일을 읽거나 무시할 수 없습니다.
답변3
ls -l /etc/ssh/keys
drw------- 2 test.com test.com 4096 Nov 20 06:53 test.com
drw------- 2 root root 4096 Nov 20 02:29 root
x
디렉터리에 대한 권한 없음 = 권한 없음실제 사용아무것~에목차. 이러한 권한을 사용하면 sshd
디렉토리 목록을 얻을 수 있지만 /etc/ssh/keys/test.com/
내용에 액세스할 수는 없습니다 /etc/ssh/keys/test.com/authorized_keys
.
의 경우 무엇이든 액세스할 수 있으므로 root
작동합니다 .root