ECDSA 대신 SSH가 RSA 키를 제공하도록하려면 어떻게해야합니까?


16

서버에 처음 액세스 할 때 SSH에서 RSA 키를 제공하고 사용자가 승인 한 경우 자동으로 저장하도록하려면 어떻게해야합니까?

현재 ECDSA 키를 제공하고 있습니다. 이미 RSA 키를 알고 있기 때문에이 시점에서 RSA 키가 표시되는 것을 선호합니다.

나는 시도했다 :

ssh -o RSAAuthentication=yes user@server

불행히도 이것은 ECDSA 키와 Are you sure you want to continue connecting (yes/no)?메시지를 제공합니다.


비슷한 상황이 있습니다. 서버 A. 클라이언트 B. B : ssh A가 먼저 키를 묻습니다. Cleint C에서 : ssh A는 클라이언트 C가 ECDSA 키를 사용하려는 시도에 실패한 후 먼저 암호를 묻습니다.이 로그를 A의 로그에서 봤습니다. C에 rsa 키를 미리로드하면 ssh A가 행복하게 연결됩니다. . C가 ECDSA 키를 첫 번째 시도로 사용하지 못하게하려면 어떻게합니까?
Kemin Zhou

답변:


14

HostKeyAlgorithms구성 변수 에서 ECDSA 알고리즘을 제거합니다 .

ssh -o HostKeyAlgorithms=ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss user@server

기본 목록 에서 모든 ECDSA 알고리즘을 간단히 제거했습니다 .

물론 당신 .ssh/config은 그 기계를 위해 그것을 넣을 수 있습니다 :

Host: server
    HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-dss-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-rsa,ssh-dss

OpenSSL의 경우 1) 호스트 뒤에 콜론이 없으며 2)이를 게시 한 후 기본 목록이 변경된 것 같습니다. HostKeyAlgorithms ssh-rsa-cert-v01@openssh.com,ssh-rsa대신 시도하십시오 .
cowlinator

6

ECDSA가 새로운 기본값이므로 RSA를 사용하지 마십시오.

서버에서이 작업을 수행 ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub 하고 해당 번호를 기록하십시오.

클라이언트에서 호스트로 SSH 할 수 있으며 동일한 번호가 표시되면 프롬프트에 Are you sure you want to continue connecting (yes/no)?긍정적으로 응답 할 수 있습니다 . 그러면 ECDSA 키가 나중에 사용하기 위해 클라이언트에 기록됩니다.


3
예. ecdsa로 업데이트 할 비즈니스 결정이있을 때까지 호환성을 유지하기 위해 RSA가 필요한 오래된 애플리케이션이 있다면 어떻습니까?
enthusiasticgeek

@RobertSiemer 원래 질문 포스터 만 허용되는 답변을 변경할 수 있습니다. 나는 그렇게 할 수 없습니다.
enthusiasticgeek

1
H2ONaCl : 허용되는 답변을 변경하십시오. 이것은 당신이 요구 한 것을하지 않습니다. @enthusiasticgeek 죄송합니다, mixup.
Robert Siemer

불이행 (권한에 대한 이의 신청)과 새로운 것 (신기한에 대한 이의 신청)이 반드시 더 나은 의미는 아닙니다. RSA는 여전히 강력한 것으로 간주됩니다. 더 많은 힘을 원한다면 비트를 4096까지 올리십시오 (2048은 곧 폐기 될 수 있습니다). 좋은 EC 알고리즘을 원하면 ed25519를 사용하십시오. ECDSA는 약한 NIST 곡선을 사용하기 때문에 빨려 들어갑니다. 이것은 한동안 잘 알려진 문제였습니다. 따라서 레거시 지원, RSA 활성화 및 이상적인 알고리즘의 경우 ed25519를 사용하십시오. 자세한 내용은 ssh-audit를 시도하십시오.
피터

5

예, OK는 곧 ECDSA로 전환하지만 그 동안 다음을 시도하십시오.

ssh -o HostKeyAlgorithms=ssh-rsa -o FingerprintHash=md5 user@example.com

시스템에 "잘못된 구성 옵션 : 지문 해시"가 제공됩니다 (OpenSSH_6.6.1p1).
Soren Bjornstad

1
@SorenBjornstad, FingerprintHash옵션은 불필요합니다. 전체 부분 만 남겨 두십시오.
Lucas

2

방금이 줄을 추가했습니다

HostKeyAlgorithms ssh-rsa

/etc/ssh/sshd_conf

이 버전에서는 제대로 작동합니다.

OpenSSH_7.7p2 ubuntu-4ubuntu2.2

1

이전 알고리즘 목록을 찾기 위해 죽은 링크가있는 회전 초의 대답을 개선하기 위해.

먼저 알고리즘 목록을 결정하십시오. 이전 목록을 찾으려면ssh -vv .

ssh -vv somehost

그리고 "호스트 키 알고리즘 : ..."과 같은 두 줄을 찾으십시오. 여기서 첫 번째는 서버가 제공하는 것으로 보이고 두 번째는 클라이언트의 제안입니다. 또는이 두 줄을 자동으로 선택하려면 다음을 시도하십시오 (그리고 ctrl + d를 누르십시오).

ssh -vv somehost 2>&1 | grep "host key algorithms:"

이제 필터링하십시오 ... 오랫동안 사용되지 않으므로 모든 dss / dsa를 제거해야하며 ecdsa (I와 마찬가지로)도 제거하려고했습니다.

ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

당신은 결국

ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

이제 설정을 편집하십시오. 자신의 구성의 경우 :

vim ~/.ssh/config

시스템 전체 구성의 경우 :

sudo vim /etc/ssh/ssh_config

전 세계적으로 새 줄을 추가하십시오.

HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

또는 특정 호스트의 경우 (서버 전체 구성에는 적합하지 않음) :

Host somehost
    HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

입력 한 목록 대신 ssh -vv"호스트 키 알고리즘 :"부분을 포함하지 않고 출력 에서 파생 된 목록을 붙여 넣습니다 .


0

기존의 기본값에서 키 알고리즘을 제거 할 수 있다는 점에서 약간의 혼란이 있습니다. 최상위 레벨 키는 ssh-keygen을 사용하여 최상의 보안을 위해 New RSA-sha2 / 256 / 512 및 ed25519 키입니다. -s ras -a -b 4096 -a 113 gen. 레거시 지원은 분명히 ssh1이 완전히 사라질 것이라는 ssh 뉴스를 읽습니다. 45 비트 및 96 비트 최대-dsa 키도 제거되었습니다. 최대 128/1024 비트로 고정되어 해킹 가능합니다. (NSA가 그렇게하고 디버그 코드가 불명확하다는 것을 의심하게 되었기 때문에 불충분 한 / 변명을 할 수 있음) 따라서 높은 비용을 지불하는 안전한 RSA 키 구조는 더 높은 표준을 지원하고 계속 유지하기 위해 재 작업되어야합니다. / etc / ssh / sshd_config에 설명 된대로 사용할 키 설정 2 키 인증 3 키 작동 (예 : sshd_config "AuthenticationMethods publickey, publickey, publickey") -ssh -Q kex 목록이 A 및 B 서버 또는 데스크탑과 모두 일치하는지 확인하십시오 (예 : poss가 출력을 다르게 함). 동일한 주요 exhng 알고리즘이 일치하는지 확인하십시오. 생산에서 새로운 ecdsa 키는 또한 사용하지 않는 것이 약한 제안입니다. 또는 get-keyexchange가 부분 액세스 보안 메시지를 거부했습니다. 좋은 infoz가 많이 참아 서 검색했습니다.


2
이 텍스트 벽을 깨 뜨리면 쉽게 따라갈 수 있습니까? 서식 가이드와 서식 코드 및 텍스트 파일 내용을 코드로 사용하고보다 명확하게하려면 해당 줄에 넣으십시오. 답을 따를 수 있다면 행복하게 답변을 편집 할 수는 있지만 할 수는 없습니다.
Zanna

-5

또는 RSA 키 접근 방식이 필요한 경우 ssh-keygen -t rsaSSH하려는 서버에 입력 할 수 있습니다 .

'~ / .ssh / id_rsa'에서 RSA 공개 및 개인 키를 생성해야합니다. 이제 공개 키를 복사하기 만하면됩니다.$HOME/.ssh/authorized_keys ssh하려는 모든 머신에서 RSA 키를 생성 한 머신으로 하기 만하면됩니다.

그리고 앉아서 휴식을 취하십시오!


1
질문은 클라이언트 측 키가 아니라 서버 키에 관한 것임을 알고 있습니까?
0xC0000022L
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.