ssh는 ssh-copy-id에도 불구하고 비밀번호를 묻습니다.


28

원격 쉘에서 sshfs 마운트뿐만 아니라 원격 서버에서도 공개 키 인증을 사용하고 있습니다. 내 sshfs 디렉토리를 강제로 삭제 한 후 ssh에서 비밀번호를 입력하라는 메시지가 표시됩니다. 로컬 컴퓨터에 대한 언급에서 원격 .ssh / authorized_keys를 제거하려고 시도했으며 로컬 컴퓨터를 원격 컴퓨터에 대한 참조에서 정리했습니다. 그런 다음 ssh-copy-id를 반복하여 암호를 입력하라는 메시지가 표시되고 정상적으로 돌아 왔습니다. 그러나 원격 서버에 ssh 할 때 여전히 암호를 묻는 메시지가 나타납니다. 문제가 무엇인지에 대해 조금 혼란 스럽습니다. 제안이 있습니까?


1
serverfault.com/questions/208181/... 내가 사이트에서 중복에 StackExchange 정책이 무엇인지 모르겠지만, 교차 게시 질문하는 것이 도움이 될 것이라고 나에게 보이지 않는다.
ephemient

당신이 단지 당신이 쓸 수 있다는 것을 확인했다면 ~, ~/.ssh하고 ~/.ssh/authorized_keys, 실행 ssh -vvv server.example.com하고 출력을보고 (당신이 원하는 경우 호스트와 사용자 이름을 익명). 서버에서 루트 액세스 권한이있는 경우 공개 키 로그인을 시도 할 때 작성된 로그 항목을보십시오.
Gilles 'SO- 악의를 멈춰라'

답변:


32

sshd는 $ HOME, $ HOME / .ssh (두 디렉토리 모두) 및 $ HOME / .ssh / authorized_keys에 대한 권한에 대해 이상하게됩니다.

내 리눅스 박스 중 하나가 $ HOME 디렉토리에서 drwxrwxrwx 권한으로 끝났습니다. 아치 리눅스 박스는 $ HOME 디렉토리의 다른 그룹에 대한 'w'권한을 제거 할 때까지 공개 키를 사용하여 절대 로그인하지 않습니다.

$ HOME 및 $ HOME / .ssh /에 그룹 및 기타에 대해 더 제한적인 권한을 부여하십시오. 그것이 sshd가 그 일을하지 못하게하는지 확인하십시오.


4
예. 및 ssh-copy-id의 권한을 관리해야 하지만 홈 디렉토리 자체가 그룹 쓰기 가능하지 않은지 확인하십시오. ~/.ssh~/.ssh/authorized_keys
Gilles 'SO- 악의를 멈춰라'

7
이것은 나를위한 것입니다. ssh-copy-id를 사용하여 RSA 키를 보냈는데 여전히 메시지가 표시되었습니다. chmod g-w homedir원격 서버에서 실행 하는 것은 매력처럼 작동했습니다.
벤 크리거

9

다음과 같은 권한이 필요합니다.

  • .ssh폴더 :700 (drwx------)
  • 공개 키 : 644 (-rw-r--r--)
  • 개인 키 : 600 (-rw-------)

5

최근 에이 문제가 발생했습니다.

$HOME디렉토리 의 권한을 수정하여 수정되었습니다 . 그러나 단순히 실행 chmod g-w ~/해도 문제가 해결되지 않았습니다. 또한 다음 을 실행 하여 디렉토리에 chmod g-w ~/대한 권한을 수정해야했습니다.others$HOMEchmod o-wx ~/

함께:

chmod g-w ~/
chmod o-wx ~/

o-x필요한지 확실하지 않으며 , 예방 조치로 간단히 실행했습니다.



0

병렬 로그인에서도 문제가 발생합니까 (예 : 열린 ssh 세션이있는 동안 sshfs를 마운트하려고 시도하는 경우)? 그렇지 않다면 홈 디렉토리가 암호화되어 있다고 생각합니까? 이 경우 $HOME/.ssh/authorized_keys처음 로그인 한 후 (비밀번호를 사용하여) 원격 시스템에서만 사용할 수 있습니다.

설명 및 필요한 해결 방법은 https://help.ubuntu.com/community/SSH/OpenSSH/Keys# 문제 해결을 확인하십시오 .


0

나는 이것을 의견으로 게시 할 것이지만 아마도 너무 길 것입니다. 폴더 안의 위치 ssh-copy-id에서 공개 키를 보내려는 시도 를 추가하고 싶었습니다 ./.ssh$HOME

ssh공개 키를 사용하여 루트로 시도 (보안 관련 주석 저장) ssh-copy-id하려는 경우 $HOME변수가 /root일반 사용자의 홈 디렉토리로 설정되는 것 이외의 다른 것으로 설정된 경우 잘못된 공개 키로 로그인을 시도 할 수 있습니다. ) 따라서 루트의 공개 키가 원격 시스템에 설치되어 있지 않으므로 루트 사용자에게 프롬프트가 표시됩니다.

다음 단일 라이너를 사용하여 정확한 공개 키를 지정할 수 있습니다.

pub="$(cat /root/.ssh/id_rsa.pub)"; ssh user@remotehost "echo $pub >> .ssh/authorized_keys; chmod 700 .ssh; chmod 600 .ssh/authorized_keys"

나는이 시나리오를 야생에서 몇 번 (오늘 아침 포함) 만났으며 누군가가 같은 상황에 처한 경우를 대비하여 2 센트를 넣으려고한다고 생각했습니다.


0

언급 된 다른 기고자들과 마찬가지로 이것은 아마도 권한 문제 일 것입니다.

이를 진단하는 가장 좋은 방법은 디버그 옵션을 켜서 (일반적으로 "-d"옵션) 원격 서버에서 SSH 데몬을 다시 시작하는 것입니다. OpenSSH 데몬 메시지는 매우 명시 적입니다. 예를 들어 다음과 같은 메시지가 표시됩니다.

Authentication refused: bad ownership or modes for directory /some/path

나는 그 메시지를 "매우 명시 적"이라고 부르지 않을 것이다. 찾고자하는 대상 (잘못된 소유권 및 권한)을 매우 모호하게 설명하지만 확인할 디렉토리 또는 파일 또는 올바른 설정을 알려주지는 않습니다.
Urhixidur

0

재부팅 후 공개 키가 남아 있지 않은 이유는 서버 홈 디렉토리가 암호화 되었기 때문입니다. (서버를 설치하는 동안이 작업을 수행합니다)


0

또 다른 가능한 문제는 서버가 키 알고리즘을 지원하지 않는다는 것입니다. 필자의 경우 sshd로그 에서 다음과 같은 메시지를 찾았습니다 ( /var/log/auth.log필자의 경우).

userauth_pubkey: unsupported public key algorithm: ssh-ed25519 [preauth]

이 경우 sshd구성 에서 해당 알고리즘에 대한 지원을 활성화하거나 (최신 sshd버전으로 업데이트해야 할 수도 있음 ) sshd연결하려는 알고리즘이 지원하는 알고리즘으로 키를 전환해야 합니다. .


0

이 동작을 인터넷 검색 할 때 첫 번째 검색 결과에이 질문이 표시되므로 솔루션을 추가하겠습니다.

제 경우에는 권한과 관련이 없습니다. ssh 명령을 실행할 때 어떤 이유로 든 (내가 빠른 해결책을 찾았 기 때문에 실제로 어떤 이유인지 직접 알 필요가 없습니다) 프로그램은 올바른 ID 파일을 찾지 못했습니다. 한 가지 해결책은 SSH 프로그램이 사용하려고 시도한 SSH 키를 원격 서버에 수동으로 추가하는 것이 었습니다. 명령에 -v를 추가하여 명령을 실행할 때 SSH 프로그램이 수행하는 작업을 관찰 할 수 있습니다.

ssh -v username@your-host-ip-or-domain 

그런 다음 SSH를 사용하여 SSH 프로그램이 ID 파일 / 개인 키를 찾으려는 공개 키를 로컬 컴퓨터에서 가져옵니다 (예 : Mac).

cat ~/.ssh/id_rsa.pub

... 그리고 다음 위치에서 remote의 authorized_keys 파일에 추가하십시오.

~/.ssh/authorized_keys

또 다른 경우에는 더 나은 해결책은 로컬 ssh 구성 파일에 사용자 정의 호스트를 추가하는 것이 었습니다. 내 Mac에서는 다음과 같습니다.

/Users/my-user-name/.ssh/config

예를 들어 다음과 같이 추가 할 수 있습니다.

Host mynewserver
        HostName some.IP.number.or.domain
        Port 20000 #if custom port is used and not the default 22
        User the_root
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa_for_my_new_server

그런 다음 다음을 실행하면됩니다.

ssh mynewserver

... 그리고 Voilà

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.