320x100

안녕하세요.

오늘은 SSH 키 인증 방식 변경에 따른 이슈내용을 정리해보았습니다.

 

장애내용

 기존 client server에 접속할때는 ssh-rsa 방식으로 SFTP 접속을 하여 서비스를 정상적으로 하고 있었는데, OS재기동 이후 접속에러가 발생하여 서비스 장애가 발생하였습니다.

 

 이후 서비스 정상화를 위해 client 에서 known_host에서 server 호스트 내용 삭제 후 서비스가 정상화 되었지만, 키 알고리즘 인증 방식이 ecdsa-sha2-nistp256로 변경되었는 것을 확인 하였습니다.

 

 Server에서 /etc/ssh/sshd_config 파일을 확인해본 결과, 기본설정에서 아래내용이 추가 되어 있는 상태를 확인 하였습니다.

. . .
HostKeyAlgorithms +ssh-dss
PubkeyAcceptedKeyTypes +ssh-dss

해당 내용에 대해서는 아래에서 확인해 보겠습니다.

 

sshd_config 파일의 ssh-dss 내용 추가 관련

 OpenSSH 7.0 이상은 유사하게 ssh-dss(DSA) 공개 키 알고리즘을 비활성화합니다.

권장 사항은 DSA 사용을 중단하고 RSA 또는 ECDSA와 같은 더 강력한 것으로 이동하는 것입니다.

 

ssh-dss 를 사용하는 client 가 있어서 비활성화된 DSA키를 사용을 활성화 시켜주기 위해 추가한 것으로 판단되며,

장애내용(ssh-rsa접속에러)과는 관련이 없어 보입니다.

 

테스트 내용

1. 테스트 환경

- 계정 A node1 서버에서 계정B node2 서버에 ssh 접속

- AIX7.2-04-02, OpenSSH_8.1p1, OpenSSL 1.0.2u

 

2. 상태 확인

- node2(Server) 에서 현재 동작중인 SSH상태 확인

[node2:root]/>sshd -T | grep -E "hostkeyalgorithms|pubkeyacceptedkeytypes"
hostkeyalgorithms 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,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-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
pubkeyacceptedkeytypes 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,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-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
[node2:root]/>ssh -Q key
ssh-ed25519
ssh-ed25519-cert-v01@openssh.comssh-rsa
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
ssh-rsa-cert-v01@openssh.com
ssh-dss-cert-v01@openssh.com
ecdsa-sha2-nistp256-cert-v01@openssh.com
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521-cert-v01@openssh.com

  현재 동작중인 SSH의 설정에는 ssh-rsa 키 값이 등록되어 있는 것을 확인할 수 있습니다.

 

3. node1에서 node2로 SSH 접속 테스트

 별도의 설정 없이 접속을 시도하면 ECDSA 키로 접속이 됩니다.

[node1:A]/home/A>ssh B@node2
The authenticity of host 'node2 (10.50.1.82)' can't be established.
ECDSA key fingerprint is SHA256:wGuzLouLnH8Z5cmAstejqgt5fKcN2T1dQoUqPaJN1Z0.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

 

 별도의 옵션을 입력 후 접속을 시도하면 RSA키로 접속하게 됩니다.

해당 옵션으로 접속한 이력이나 관련 내용이 있는지 확인이 필요합니다.

[node1:A]/home/A>ssh -o HostKeyAlgorithms=ssh-rsa B@node2
The authenticity of host 'node2 (10.50.1.82)' can't be established.
RSA key fingerprint is SHA256:E/SVly/rC5mRNKTrWVovYWx2rvuSah2o7amNT73fKe4.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

 

node1서버의 A계정 /.ssh 폴더 밑에 config 파일 작성 후 별도의 옵션 없이 rsa 접속이 됩니다.

[node1:A]/home/A/.ssh>vi config
Host node2
        HostKeyAlgorithms=ssh-rsa
 
[node1:A]/home/A/.ssh>ssh B@node2  
The authenticity of host 'node2 (10.50.1.82)' can't be established.
RSA key fingerprint is SHA256:E/SVly/rC5mRNKTrWVovYWx2rvuSah2o7amNT73fKe4.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

 

 테스트 결과, 특정 옵션 hostkey 알고리즘 값을 ssh-rsa 로 수동으로 입력 해주면 RSA Key 를 사용하여 접속을 시도하는 것을 확인 할 수 있었습니다.

 

 추가적으로 다른 SSH설정이나 OS환경(Server, Client) 변경에 따라 알고리즘 값이 변경되었을 수 도 있을 것 같습니다.

해당 테스트 내용은 참고만 해주시면 감사하겠습니다.

 

오늘도 좋은 하루 되세요 ^^

 

반응형

+ Recent posts