원격 쉘에서 sshfs 마운트뿐만 아니라 원격 서버에서도 공개 키 인증을 사용하고 있습니다. 내 sshfs 디렉토리를 강제로 삭제 한 후 ssh가 비밀번호를 묻는 메시지를 표시하기 시작했습니다. 로컬 컴퓨터에 대한 언급에서 원격 .ssh/authorized_keys를 제거하려고 시도했으며 로컬 컴퓨터를 원격 컴퓨터에 대한 참조에서 정리했습니다. 그런 다음 ssh-copy-id를 반복하여 암호를 입력하라는 메시지가 표시되고 정상적으로 돌아 왔습니다. 그러나 원격 서버에 ssh 할 때 여전히 암호를 묻는 메시지가 나타납니다. 문제가 무엇인지에 대해 조금 혼란 스럽습니다. 제안이 있습니까?
sshd는 $ HOME, $ HOME/.ssh (두 디렉토리 모두) 및 $ HOME/.ssh/authorized_keys에 대한 권한에 대해 이상하게됩니다.
내 리눅스 박스 중 하나가 $ HOME 디렉토리에서 drwxrwxrwx 권한으로 끝났습니다. 아치 리눅스 박스는 $ HOME 디렉토리의 다른 그룹에 대한 'w'권한을 제거 할 때까지 공개 키를 사용하여 절대 로그인하지 않습니다.
$ HOME 및 $ HOME/.ssh /에 그룹 및 기타에 대해 더 제한적인 권한을 부여하십시오. 그것이 sshd가 그 일을하지 못하게하는지 확인하십시오.
다음과 같은 권한이 필요합니다.
.ssh
폴더 : 700 (drwx------)
644 (-rw-r--r--)
600 (-rw-------)
최근 에이 문제가 발생했습니다.
$HOME
디렉토리의 권한을 수정하여 수정되었습니다. 그러나 chmod g-w ~/
만 실행해도 문제가 해결되지 않았습니다. chmod g-w ~/
외에도 $HOME
를 실행하여 chmod o-wx ~/
디렉토리에서 others
의 권한을 수정해야했습니다.
함께:
chmod g-w ~/
chmod o-wx ~/
o-x
가 필요한지 확신 할 수 없으므로 예방 조치로 간단히 실행했습니다.
~/.ssh 폴더의 권한을 변경하면 이 게시물은 Super User SE 에 따라 문제가 해결되었습니다.
이 문제에 대한 인터넷 검색시 첫 번째 검색 결과에이 질문이 표시되므로 솔루션을 추가하겠습니다.
제 경우에는 권한과 관련이 없습니다. ssh 명령을 실행할 때 어떤 이유로 든 (내가 빠른 해결책을 찾았 기 때문에 실제로 어떤 이유인지 직접 알 필요가 없습니다) 프로그램은 올바른 ID 파일을 찾지 못했습니다. 한 가지 해결책은 SSH 프로그램이 사용하려고 시도한 SSH 키를 원격 서버에 수동으로 추가하는 것이 었습니다. 명령에 -v를 추가하여 명령을 실행할 때 SSH 프로그램이 수행하는 작업을 관찰 할 수 있습니다.
ssh -v [email protected]
그런 다음 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à
병렬 로그인에서도 문제가 발생합니까 (예 : 열린 ssh 세션이있는 동안 sshfs를 마운트하려고 시도하는 경우)? 그렇지 않다면 홈 디렉토리가 암호화되어 있다고 생각하십니까? 이 경우 $HOME/.ssh/authorized_keys
는 처음 로그인 한 후 (비밀번호를 사용하여) 원격 시스템에서만 사용할 수있게되었습니다.
설명과 필요한 해결 방법은 https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooting 를 확인하십시오.
필자의 경우 원격 서버에서 다음 파일을 찾으십시오.
/etc/ssh/sshd_config
다음 속성을 no로 설정했습니다.
PubkeyAuthentication no
해시로 주석 처리 :
#PubkeyAuthentication no
트릭을 반으로했고 나머지는 ssh 서비스를 다시 시작하는 것이 었습니다.
/etc/init.d/sshd restart
재부팅 후 공개 키가 살아남지 못한 이유는 서버 홈 디렉토리가 암호화 되었기 때문입니다. (서버를 설치하는 동안이 작업을 수행합니다)
나는 이것을 의견으로 게시 할 것이지만 아마도 너무 길 것입니다. ssh-copy-id
가 /.ssh
폴더 내의 $HOME
위치에서 공개 키를 보내려고한다는 것을 추가하고 싶었습니다.
공개 키를 사용하여 루트로 ssh
를 시도 (보안 관련 주석 저장)하려는 경우 ssh-copy-id
는 $HOME
변수가 /root
이외의 다른 (예 : 일반 사용자의 홈 디렉토리로 설정) 설정되어 있으므로 루트의 공개 키가 원격 시스템에 설치되어 있지 않기 때문에 루트 사용자에게 프롬프트가 표시됩니다.
다음 단일 라이너를 사용하여 정확한 공개 키를 지정할 수 있습니다.
pub="$(cat /root/.ssh/id_rsa.pub)"; ssh [email protected] "echo $pub >> .ssh/authorized_keys; chmod 700 .ssh; chmod 600 .ssh/authorized_keys"
나는이 시나리오를 야생에서 몇 번 (오늘 아침 포함) 만났으며 누군가가 같은 상황에 처한 경우를 대비하여 2 센트를 넣으려고한다고 생각했습니다.
언급 한 다른 기고자들과 마찬가지로, 이것은 아마도 권한 문제 일 것입니다.
이를 진단하는 가장 좋은 방법은 디버그 옵션을 켜서 (일반적으로 "-d"옵션) 원격 서버에서 SSH 데몬을 다시 시작하는 것입니다. OpenSSH 데몬 메시지는 매우 명시 적입니다. 예를 들어 다음과 같은 메시지가 표시됩니다.
Authentication refused: bad ownership or modes for directory /some/path
또 다른 가능한 문제는 서버가 키 알고리즘을 지원하지 않는다는 것입니다. 제 경우에는 sshd
로그 (/var/log/auth.log
나의 경우에는):
userauth_pubkey: unsupported public key algorithm: ssh-ed25519 [preauth]
이 경우 sshd
구성 (최신 sshd
버전으로 업데이트해야 할 수 있음)에서 해당 알고리즘에 대한 지원을 활성화하거나 키를로 전환해야합니다. 연결하려는 sshd
에서 지원하는 알고리즘.