dropbear ssh 서버가 ' 연결을 허용하지 않았습니다.

내 라우터에 SSH 액세스 권한을 얻으려고합니다. 현재는 텔넷 액세스 만 있고 dropbear를 설치하고 실행 중입니다 (라우터에 연결된 USB 드라이브에서 opkg 사용).

처음부터 개인 키를 생성하고 암호를 해독했습니다. dropbear는 아직 지원하지 않음) 및 공개 키 :

cd .ssh openssl genrsa -des3 -out id_rsa openssl rsa -in id_rsa -out id_rsa ssh-keygen -y -f id_rsa > authorized_keys 

공개 키를 업로드했습니다 (authorized_keys )을 /root/.ssh로 변경합니다. Apache 서버 (로컬 컴퓨터)에 파일을 저장하고 wget을 사용하여 라우터에 다운로드 한 다음 (다운로드 한 파일이 소유자 / 그룹으로 루트가 됨) 권한을 0600으로 변경했습니다 (클라이언트와 동일하지만 내 사용자 ).

액세스하려고하면 “Permission denied (publickey)”오류가 발생합니다.

$ ssh -v -i ~/.ssh/id_rsa [email protected] OpenSSH_7.4p1, OpenSSL 1.0.2j 26 Sep 2016 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Connecting to 192.168.1.1 [192.168.1.1] port 22. debug1: Connection established. debug1: key_load_public: No such file or directory debug1: identity file /home/chazy/.ssh/id_rsa type -1 debug1: key_load_public: No such file or directory debug1: identity file /home/chazy/.ssh/id_rsa-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_7.4 debug1: Remote protocol version 2.0, remote software version dropbear debug1: no match: dropbear debug1: Authenticating to 192.168.1.1:22 as "root" debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: algorithm: [email protected] debug1: kex: host key algorithm: ssh-rsa debug1: kex: server->client cipher: aes128-ctr MAC: hmac-sha1 compression: none debug1: kex: client->server cipher: aes128-ctr MAC: hmac-sha1 compression: none debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ssh-rsa SHA256:1EFA75uwLp+4hBW0t3aaY05QjLzYd4jjDWoULAzF/8o debug1: Host "192.168.1.1" is known and matches the RSA host key. debug1: Found key in /home/chazy/.ssh/known_hosts:1 debug1: rekey after 4294967296 blocks debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: rekey after 4294967296 blocks debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Trying private key: /home/chazy/.ssh/id_rsa debug1: Authentications that can continue: publickey debug1: No more authentication methods to try. Permission denied (publickey). 

내가하지 않는 한 ” 문서 ( GitHub 저장소 )의 내용을 잘못 읽음 :

서버 공개 키 인증 :

OpenSSH와 동일한 방식으로 ~ / .ssh / authorized_keys를 사용할 수 있습니다. 키 항목을 해당 파일에 입력하기 만하면됩니다. 형식은 다음과 같아야합니다.

ssh- RSA AAAAB3NzaC1yc2EAAAABIwAAAIEAwVa6M6cGVmUcLl2cFzkxEoJd06Ub4bVDsYrWvXhvUV + ZAM9uGuewZBDoAqNKJxoIn0Hyd0Nk / yU99UVv6NWV / 5YSHtnf35LKds56j7cuzoQpFIdjNwdxAN0PCET / MG8qyskG / 2IE2DPNIaJ3Wy + Ws4IZEgdJgPlTYUBWWtCWOGc = 누군가 @ 호스트 이름

당신은 확인해야하는 ~ / 스푸핑 및 키 파일은 사용자들만 쓸 수 있습니다. 편집자주의 열쇠를 나누는

Dropbear는 authorized_keys 항목에 대한 몇 가지 옵션을 지원합니다. 맨 페이지를 참조하세요.

내가 말한대로 다 했으므로 문제가 어디인지 모르겠습니다.

문서에 다른 방법이 언급되어 있습니다.

클라이언트 공개 키 인증 :

Dropbear는 클라이언트로서 공개 키 인증을 수행 할 수 있지만 OpenSSH 스타일 키를 Dropbear 형식으로 변환하거나 dropbearkey를 사용하여 만들어야합니다.

OpenSSH 스타일 개인 키가있는 경우 ~ / .ssh / id_rsa,해야 할 일 :

dropbearconvert openssh dropbear ~ / .ssh / id_rsa ~ / .ssh / id_rsa.db dbclient -i ~ / .ssh / id_rsa.db

Dropbear는 암호화 된 호스트 키를 지원하지 않지만 ssh-agent에 연결할 수 있습니다.

그래서 개인 키를 dropbear로 변환하면이 문제가됩니다. 개인 키를 사용하면 dropbear 클라이언트를 사용하여 dropbear 서버에 연결할 수 있습니다.

dropbearconvert openssh dropbear id_rsa id_rsa.db 

이것을 시도하고 작동하는지 확인하겠습니다. 그러나 어쨌든 서버 공개 키 인증은 작동합니다.

댓글

  • dropbear ssh 서버 / 구성이 루트 로그인을 허용합니까? 기본적으로 여러 ssh 서버에서 루트 로그인은 보안을 위해 허용되지 않습니다.
  • 그렇다고 생각합니다. ‘ (호스트 키만) 허용하지 않는 매개 변수는 -w (사용하지 않음)입니다.
  • 질문 편집 : ssh 키를 dropbear로 변환하는 단계를 따랐습니다. key and nothing (Ipor Sircer가 첫 번째 답변에서 언급 한대로)
  • github 저장소에서 문서를 찾았습니다 (‘ 여기에서보고 할 수 없으며 문제가 활성화되지 않음). . 질문이 다시 수정되었습니다. 아직 같은 문제 : (

Answer

짧은 답변 : 아마도 OpenWrt를 실행 중일 것입니다. /root/.ssh/authorized_keys 대신 /etc/dropbear/authorized_keys의 공개 키입니다.

긴 답변 :

GitHub 당신이 가리키는 저장소는 dropbear 작성자가 관리하는 저장소입니다. ~/.ssh/authorized_keys가 작동한다고하며 GitHub에 따르면 최소한 14 년 동안 그렇게 해왔습니다. svr-authpubkey.c 는 “pw_dir”에 /.ssh/authorized_keys를 추가합니다.

하지만 , 당신과 같은 문제가 있었고 OpenWrt 18.06.1에 제공된 바이너리가 실제로 /etc/dropbear/authorized_keys을 여는 것을 발견했습니다.이 파일을 사용하면 저에게 효과적입니다. .

이 동작은 OpenWrt 문서 에 문서화되어 있습니다.

어떻게 되었습니까?

위의 코드는 자체적으로 해당 파일 이름을 생성 할 수 없다는 점을 감안할 때 (.ssh가 누락 됨) .ssh 심볼릭 링크가 어디에도 없습니다. 바이너리에서 strings를 실행했습니다. 이는 GitHub 코드에서 예상 할 수있는 %s/.ssh/authorized_keys 바로 앞에 /etc/dropbear/authorized_keys가 명시 적으로 언급되어 있음을 보여줍니다. OpenWrt 바이너리가 동일한 소스에서 컴파일되지 않았다고 결론을 내립니다. 실제로 OpenWrt는 이 패치 로 업스트림 코드를 패치합니다. 대상 사용자가 루트 인 경우에만 /etc/dropbear/authorized_keys에 사용되는 파일을 변경합니다.

opkg, OpenWrt도 사용하고 있으며 이것이 문제라고 생각합니다. 질문에 OpenWrt 태그를 추가했습니다.

Answer

authorized_keys는 디렉토리가 아니라 파일입니다.

authorized_keys 파일의 예 :

 # Comments allowed at start of line ssh-rsa AAAAB3Nza...LiPk== [email protected] from="*.sales.example.net,!pc.sales.example.net" ssh-rsa AAAAB2...19Q== [email protected] 

http://man.he.net/man5/authorized_keys

또한 .ssh/ 및 그 안의 모든 파일은 사용자 만 소유하고 읽을 수 있어야합니다 (이 경우 root).

댓글

  • 방금 수정했지만 여전히 운이 없습니다 🙁 (업데이트 된 질문 참조).

답변

man dropbearkeys :

NOTES The program dropbearconvert(1) can be used to convert between Dropbear and OpenSSH key formats. Dropbear does not support encrypted keys. EXAMPLE generate a host-key: # dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key extract a public key suitable for authorized_keys from private key: # dropbearkey -y -f id_rsa | grep "^ssh-rsa " >> authorized_keys 

댓글

  • 개인 키를 변환 할 수 있었지만 여전히 운이 없습니다 🙁 (업데이트 된 질문 참조).

답변

dropbearkey 도구를 사용하여 ssh 키를 만들어야합니다. RSA_KEYFILE = / etc / dropbear / dropbear_rsa_host_key DSS_KEYFILE = / etc / dropbear / dropbear_dss_host_key

dropbearkey -t dss -f $ DSS_KEYFILE

dropbearkey -t rsa -f $ RSA_KEYFILE

그런 다음 dropbear 데몬을 다시 시작합니다. 그런 다음 연결을 시도하면 작동합니다.

Answer

Dropbear와 함께 PKI를 사용하여 연결하는 데 도움이 될 수있는 몇 가지 지침으로, OpenSSH 클라이언트에서 연결하는 Alpine Linux 3.12 패키지를 기반으로하는 컨테이너를 테스트했습니다.

  1. 사용자는 셸이 필요합니다.
  2. 사용자는 로그인 비밀번호가 필요합니다.
  3. 사용자의 ~ 그룹 / 세계 쓰기 가능 (예 : chmod 755 적어도; 홈 디렉토리에는 700를 사용해야합니다.
  4. 사용자의 ~/.ssh~/.ssh/authorized_keys 반드시 소유자 만 액세스 할 수 있어야합니다 (예 : 700 디렉토리 및 600 파일).
  5. 반드시 쓰기 가능한 /tmp 디렉토리
  6. authorized_keys 항목이 사용 된 형식과 동일합니다. by OpenSSH.

저는 알파인 패키지에서 체리 선택 파일을 사용하여 컨테이너를 만들고 있습니다. 위의 요구 사항이 모두 충족되는 한 ssh 할 수있는 ~ 2MB 이미지가 있습니다.

답변

I dropbear를 통해 내 서버에 연결하는 동안 갑자기 작동이 중단 된 이유를 찾는 동안이 질문을 받았습니다 (몇 달 동안 작동했지만 몇 주마다 가끔씩 만 사용됨).

해결 방법 / 설명 i 마지막으로 발견 된 메시지는 debug1: send_pubkey_test: no mutual signature algorithm 클라이언트의 ssh 연결 시도에 대한 자세한 설명으로 bitbucket 문제 해결 문서 .

이 기사에서는 다양한 보안 취약성 […] 으로 인해 운영 체제 및 SSH 클라이언트에서 RSA 알고리즘이 빠르게 사용 중단되고 있으며 가능한 해결 방법을 나열합니다. 둘 중 하나 :

  • 클라이언트 cfg-file에 PubkeyAcceptedKeyTypes +ssh-rsa 추가 ( 일시적 해결 방법 안전하지 않습니다!)

  • ECDSA 또는 ED25519 알고리즘 / 키를 사용합니다. 이제 내 시스템에있는 dropbear 버전을 사용하면 ED25519가 dropbears 측에서 알 수없는 알고리즘 오류를 주었으므로 ECDSA를 사용할 수 있습니다.

이 질문이 내가 힘들었던 것처럼이 질문에 걸려 넘어지는 사람에게 도움이되기를 바랍니다. 아마도 원래 질문에 대한 해결책이 아닐 것입니다, pls. 용서하세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다