RHEL9 또는 Rocky9에서 sshd_config 설정 변경 후 접속이 안되는 경우
RHEL9 및 이의 호환 OS인 Rocky9 리눅스의 SSHD 설정 기본은 다음과 같습니다.
/etc/ssh/sshd_config <= Include /etc/ssh/sshd_config.d/*.conf <= Include /etc/crypto-policies/back-ends/opensshserver.config
이런 구조의 설정에 변화를 준 후, 특히 opensshserver.config를 포함하지 않도록 하는 설정 후, Xshell에서 해당 서버에 접속이 안되는 경우가 있습니다. 다음은 이 경우의 원인과 해결책에 대한 안내입니다.
sshd_config에서 포함하도록 한 /etc/crypto-policies/back-ends/opensshserver.config 파일의 내용은 ssh 알고리즘에 관한 것입니다.
이 알고리즘 중 관련된 것은 HostKeyAlgorithm인데요. 그 중 RSA 키 알고리즘이 문제가 됩니다.
RHEL 9의 sshd 기본 알고리즘에는 ssh-rsa가 포함되어 있지만 opensshserver.config 파일을 포함할 때 ssh-rsa가 제외됩니다. 그래서 /etc/crypto-policies/back-ends/opensshserver.config를 "Include"할 때는 접속이 되고 이를 포함하지 않을 때는 접속에 실패하게 되는 것입니다.
Putty 등 다른 SSH 클라이언트에서는 접속이 되는 경우도 있는데요. ssh 접속 시 알고리즘 협상 과정에서 저희는 RSA가 먼저 선택되고, Putty는 다른 키가 먼저 선택되기 때문입니다. 그래서 Xshell 7 빌드 0114에 RSA 키를 사용하지 않도록 하는 옵션을 추가했습니다. Putty도 예전 버전을 사용하는 경우 같은 문제가 발생합니다.
ssh-rsa 키는 보안상 문제가 있다고 알려져 최신 ssh 서버 및 클라이언트에서는 제외하는 분위기입니다. 최신 버전의 OpenSSH에서는 RSA 키 알고리즘을 제외하는 대신 'crypto-policies'가 알고리즘을 다루도록 하면서 ssh-rsa 키 알고리즘에 변화가 생긴 것 같습니다.
어떤 이유로 /etc/crypto-policies/back-ends/opensshserver.config를 포함하지 않아야 할 경우 crypto-policies가 적용된 OpenSSH 서버에서 Xshell을 통해 원활한 접속을 하기 위해서는 다음 중 어느 하나를 선택하면 될 것 같습니다.
Xshell에서 호스트 키로 RSA 를 사용하지 않도록 하는 옵션 설정
로컬 셸에서 다음 명령을 실행합니다.
set DisableHostKeySshRsa=1
sshd_config에서 호스트 키로 RSA 키를 사용하지 않도록 하는 설정
호스트 키 설정이 아래와 같도록 합니다.
#HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
HostKeyAlgorithms 설정에서 ssh-rsa 알고리즘은 포함하지 않도록 하는 설정
sshd_config 설정에서 아래와 같은 설정을 추가하여 기본 설정에서 ssh-rsa만 제거할 수 있습니다.
HostKeyAlgorithms -ssh-rsa (알고리즘 앞에 '-'를 추가합니다)
이 경우는 RSA 키를 사용하더라도 다른 알고리즘이 적용되어 서버에 접속할 수 있습니다.