암호가없는 ssh가 작동하지 않습니다


35

나는 / W 설치에 암호가없는 ssh를 B를 시도했습니다 ABBA뿐만 아니라. ssh-keygen -trsa두 머신에서 모두 공개 및 개인 키를 생성했습니다 . 사용 된 ssh-copy-id에서 공개 키를 복사 유틸리티 A에 대한 B뿐만 아니라 BA.

암호없는 SSH는에서 작동 AB하지만, not에서 B까지 A. ~ / ssh / 폴더의 권한을 확인했으며 정상적인 것 같습니다.

A's .ssh 폴더 권한 :

-rw-------  1 root root 13530 2011-07-26 23:00 known_hosts
-rw-------  1 root root   403 2011-07-27 00:35 id_rsa.pub
-rw-------  1 root root  1675 2011-07-27 00:35 id_rsa
-rw-------  1 root root   799 2011-07-27 00:37 authorized_keys
drwxrwx--- 70 root root  4096 2011-07-27 00:37 ..
drwx------  2 root root  4096 2011-07-27 00:38 .

B's .ssh 폴더 권한 :

-rw------- 1 root root  884 2011-07-07 13:15 known_hosts
-rw-r--r-- 1 root root  396 2011-07-27 00:15 id_rsa.pub
-rw------- 1 root root 1675 2011-07-27 00:15 id_rsa
-rw------- 1 root root 2545 2011-07-27 00:36 authorized_keys
drwxr-xr-x 8 root root 4096 2011-07-06 19:44 ..
drwx------ 2 root root 4096 2011-07-27 00:15 .

A우분투 10.04 (OpenSSH_5.3p1 데비안 3ubuntu4 2009 년 월에는 OpenSSL 0.9.8k 25)는 B데비안 기계 (OpenSSH_5.1p1 데비안-5 2007 년에는 OpenSSL 0.9.8g 10월 19일)

보낸 사람 A:

#ssh B

잘 작동합니다.

보낸 사람 B:

#ssh -vvv A 
...
...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /root/.ssh/identity ((nil))
debug2: key: /root/.ssh/id_rsa (0x7f1581f23a50)
debug2: key: /root/.ssh/id_dsa ((nil))
debug3: Wrote 64 bytes for a total of 1127
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,gssapi,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Offering public key: /root/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug3: Wrote 368 bytes for a total of 1495
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
root@192.168.122.1's password: 

본질적으로 파일을 사용하여 인증하지 않음을 의미합니다 /root/id_rsa. ssh-add두 머신 모두 에서 명령을 실행했습니다 .

/etc/ssh/sshd_config파일 의 인증 부분 은

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files

아이디어가 부족합니다. 도움을 주시면 감사하겠습니다.


의 설정 란 PermitRootLogin에서 /etc/ssh/sshd_configA의는?
taneli

@taneli : yes, 그렇지 않으면 사용자에게 비밀번호를 묻는 메시지가 표시되지 않습니다.
Lekensteyn

내 경우에는 내가 "을 / etc / SSH / sshd_config에"우분투 12.04 파일의 주석 "IgnoreUserKnownHosts의 예"에 있었다
마틴 Magakian

답변:


24

다음 절차를 따르십시오.

머신 A에서

터미널을 열고 다음과 같이 명령을 입력하십시오.

root@aneesh-pc:~# id

우리가 루트인지 확인하기 위해.

우리는 다음과 같은 위의 명령 출력 뭔가가 사용하는 루트 루트 다른 스위치 경우 su명령을

uid=0(root) gid=0(root) groups=0(root)

1) 키를 작성하십시오.

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
49:7d:30:7d:67:db:58:51:42:75:78:9c:06:e1:0c:8d root@aneesh-pc
The key's randomart image is:
+--[ RSA 2048]----+
|          ooo+==B|
|         . E=.o+B|
|        . . .+.*o|
|       . . .  ...|
|        S        |
|                 |
|                 |
|                 |
|                 |
+-----------------+

비밀번호 문구를 사용하지 않았습니다. 필요한 것이 있으면 사용할 수 있습니다.

2) 공개 키를 시스템 B의 .ssh/authorized_keys파일 에 복사 하십시오.

root@aneesh-pc:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@mylap
root@mylap's password: 

이제로 시스템에 로그인 ssh 'root@mylap'하고 체크인하십시오.

~/.ssh/authorized_keys

예상치 못한 키를 추가하지 않았는지 확인하십시오.

mylap을 로그인하려는 컴퓨터 (예 : 컴퓨터 B)의 호스트 이름 또는 IP로 바꾸십시오.

3) 비밀번호없이 B에 로그인

root@aneesh-pc:~# ssh root@mylap
Warning: Permanently added 'mylap,192.168.1.200' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Wed Jul 27 15:23:58 2011 from streaming-desktop.local
aneesh@mylap:~$

머신 B에서

4) 머신 A에 다시 로그인 할 키를 작성하십시오.

root@mylap:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
35:9f:e7:81:ed:02:f9:fd:ad:ef:08:c6:4e:19:76:b1 root@streaming-desktop
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|          o   .  |
|         . + + o |
|        S o * E  |
|           = O . |
|            O +  |
|           + o o.|
|            . o+=|
+-----------------+

5) 공개 키를 시스템 A의 .ssh/authorized_keys파일 에 복사 하십시오.

root@mylap:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
root@aneesh-pc's password: 

이제로 시스템에 로그인 ssh 'root@aneesh-pc'하고 체크인하십시오.

.ssh/authorized_keys

예상치 못한 키를 추가하지 않았는지 확인하십시오.

6) 비밀번호없이 A에 로그인

ssh root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)

 * Documentation:  https://help.ubuntu.com/


Last login: Tue Jul 26 18:52:55 2011 from 192.168.1.116

이 단계를 완료 할 수 있으면 완료된 것입니다. 이제 ssh-key (공개 키) 사용 로그인을 사용하는 두 대의 시스템이 있습니다.


6 단계를 모두 지정하고 5 단계까지 관련된 모든 사항을 확인했지만 6 단계가 작동하지 않습니다.
Cuurious

이 명령의 출력을 제공 할 수 있습니까 : 'ssh -v root @ aneesh-pc'. 사용자 이름과 호스트 이름을 귀하의 것으로 바꾸십시오.
aneeshep

15
범인을 발견하여 /root(770) 의 권한 drwxrwx--- 70 root root 4096 2011-07-27 00:37 .. 이 너무 열려 있습니다. 권한이 변경 drwxr-xr-x되었으며 현재 작동 중입니다. 부모 디렉토리의 권한이에 영향을 미친다는 사실을 상상할 수 없습니다 ssh.
Cuurious

1
@Cuurious 좋은 캐치, 내 홈 디렉토리도 770설정하고 a로 변경 750했으며 모든 것이 세계와 맞습니다 :) 나는 항상 리눅스 prems가 그와 반대로 작동 할 수 있다는 것을 잊어 버린 것 같습니다.
complistic

1
3 단계에서 오류가 발생했습니다 . 비밀번호를 입력 한 후 ssh-copy-id 가 실행되지만 비밀번호를 입력하지 않아도 여전히 로그인 할 수 없습니다. 인증 된 _ 키 파일에 내 .pub의 텍스트가 포함되어 있으며 로그인시 키를 제공하고 있습니다. . 소용이 없습니다. 모든 디렉토리에 대한 권한이 정확합니다.
Matt Clark

44

암호가없는 ssh를 설정 한 후에도 여전히 사용자 암호를 묻는 메시지가 표시되었습니다. /var/log/auth.log원격 컴퓨터를 살펴보면 문제가 지적되었습니다.

sshd[4215]: Authentication refused: bad ownership or modes for directory /home/<user>

따라서 올바른지 확인하십시오.

chmod o-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

다른 사용자가 .ssh폴더 를 쓰지 못하도록하는 것은 분명하지만 홈 폴더에 대해 동일한 요구 사항을 갖는 것이 더 까다로 웠습니다.

또한, 검사는 /etc/ssh/ssd_config다음을 확인합니다 RSAAuthenticationPubkeyAuthentication옵션을 사용할 수 없습니다. 기본값은 yes문제가되지 않도록하는 것입니다.


또한 위에 나열된 폴더가 올바른 사용자가 소유하고 있는지 확인하십시오
GoalBased

잘못 생성 된 realtek 드라이버 아카이브를 압축 해제하여이 상황에 도달했습니다. 압축을 푼 디렉토리의 소유자를 변경했습니다.
Paul McMillan

2
홈 폴더는 쓸 수 없으므로 쓸 수 없으므로 ~/.ssh다른 것으로 이름을 바꾼 다음 자체 키가있는 새 폴더 를 만들 수 있습니다.
Kevin Panko

2
대단해! 호스트 시스템의 로그를 조사하는 것에 대해서는 생각하지 않았습니다. 감사!
user3099609

14

아마도 더 높은 수준의 권한 문제 일 것입니다. 그룹 및 기타 홈 디렉토리 및 .ssh 디렉토리에 대한 쓰기 권한제거 해야합니다 . 이러한 권한을 수정하려면 chmod 755 ~ ~/.ssh또는을 실행하십시오 chmod go-w ~ ~/.ssh.

여전히 문제가 발생하면 로그에 다음 grep을 발행하십시오.

sudo egrep -i 'ssh.*LOCAL_USER_NAME' /var/log/secure

( LOCAL_USER_NAME로컬 사용자 이름으로 바꿉니다 ...)

sshd 인증 정보가 보안 로그에 기록되고 있다고 가정하면 문제에 대해 더 많이 알려주십시오. 이는 기본적으로 있어야합니다. 다음과 같은 오류가 표시되는 경우 :

날짜 호스트 이름 sshd [1317] : 인증 거부 : 디렉토리 / path / to / some / directory에 대한 소유권 또는 모드가 잘못되었습니다

위에서 설명한 문제이므로 문제의 디렉토리를 찾아 그룹 및 기타에서 쓰기 권한을 제거해야합니다.

쓰기 권한을 홈 디렉토리로 제한해야하는 이유 (이미 .ssh 및 후속 디렉토리에서 권한이 이미 제한되어 있음에도 불구하고) 다른 사용자가 .ssh 디렉토리의 이름을 바꾸고 새 디렉토리를 만들 수 있습니다. 대부분의 사용자에 대한 수정은 디렉토리의 내용을 확인하는 대신 권한을 변경하는 것입니다 (잘못된 권한으로 인해) 그대로 사용할 수 없습니다 ...

TLDNR : 그룹 및 / 또는 다른 홈 디렉토리에 대한 쓰기 액세스를 허용하면 ssh 강제 비밀번호 로그인이 작성됩니다.


2

각 컴퓨터에서 루트 계정을 사용하고 있습니까? 보통 우분투에서는 사용자 계정을 사용하고 필요에 따라 sudo 권한을 부여합니다.

루트가 아닌 사용자 sudo chown $USER -R ~/.ssh를 사용하여 문제를 해결할 수있는 경우

확인해야 할 다른 사항 :

B id_rsa.pub가 A에 있는지 다시 확인하십시오 authorized_keys.

A가 /etc/ssh/sshd_config포함되어 있는지 확인

PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes

나중에 우분투 컴퓨터에서 루트 계정을 활성화했습니다. 따라서 두 시스템 모두에서 루트 사용자로 실행됩니다
Cuurious

네, 간과했을 수도있는 몇 가지 다른 제안을 추가했습니다. 그 출력은 실제로는 쓸모가 없지만, rsa가 받아 들여지지 않은 이유는 없습니다.
Smithamax

1
당신은 rsa 키가 받아 들여지지 않은 이유가 여기에 필수 요소라고 생각합니다. :) sshd_config는 상기 언급 된 요소들을 포함하고 있습니다. /etc/ssh/sshd_config파일 내용 의 내용을 포함하도록 질문을 편집했습니다
Cuurious

-3

대상 변경의 / etc / ssh / sshd_config

허가 루트 로그인

허가 루트 로그인 예

그런 다음 sshd PID를 -HUP하십시오.

root @ dzone2 # ps -ef | grep ssh root 28075 27576 0 11 월 17 일? 6:11 / usr / lib / ssh / sshd

root 17708 20618   0 10:09:30 pts/37      0:00 grep ssh root@dzone2 # kill -HUP 28075 root@dzone2 # ps -ef|grep ssh
root 17861 20618   0 10:09:44 pts/37      0:00 grep ssh
root 17852 27576   0 10:09:42 ?           0:00 /usr/lib/ssh/sshd

1
도움이되지 않습니다. 문제는 암호가없는 SSH 로그인 (RSA 키 쌍으로 인증)이 작동하지 않는다는 것입니다. 제공 한 지침은 rootSSH 로그인 작동을 위한 것입니다. 그것은이 질문의 내용과는 전혀 관련이 없습니다. 또한 root계정이 활성화되어 있으면 (우분투에서는 기본적으로 활성화되어 있지 않음) rootSSH 로그인을 활성화 하면 상당히 위험 할 수 있습니다.
Eliah Kagan 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.