SSH 키 없이 특정 서버에 대한 루트 액세스를 얻을 수 있는지 BASH를 통해 확인하고 싶습니다. 따라서 스크립트는 SSH 키 없이 액세스할 수 있는지 확인해야 합니다. 내 시도는 다음과 같습니다. (의사 코드)
/usr/bin/ssh -o BatchMode=yes -o PreferredAuthentications=password
if [[ "$?" == "255" ]]; then
echo "root access possible without key"
else
echo "not possbile"
fi
하지만 이 코드는 작동하지 않습니다. 오류 코드가 항상 동일하기 때문입니다. 서버에 SSH 키가 필요한지 여부입니다. 이제 내 질문은 서버에 로그인하기 위해 SSH 키가 필요한지 여부를 확인하기 위해 어떤 명령을 사용할 수 있느냐는 것입니다. 아니면 확인할 수 있는 오류 코드를 제공하는 명령은 무엇입니까?
내 목표는 아직 SSH 키를 사용하지 않는 서버를 찾기 위해 전체 로컬 네트워크를 검색하는 것입니다.
감사해요
답변1
실제로 올바른 키나 비밀번호를 시도하거나 서버 구성을 확인하지 않고는 이 작업을 수행할 수 없다고 생각합니다.
sshd
고객에게 비밀번호를 물어보는 것이 좋으며, PermitRootLogin prohibit-password
비밀번호를 설정하더라도 비밀번호는 절대 작동하지 않습니다. 비밀번호가 있어도 비밀번호를 물어보며 PermitRootLogin no
, 비밀번호를 입력해도 로그인이 되지 않습니다. 제 기억이 맞다면 실제로는 PAM을 통한 인증 시도까지 위조하고, 유효하지 않다고 알려진 비밀번호로만 하기 때문에 비밀번호 인증이 허용되는지 여부는 그때부터 알 수 없습니다. 등도 이와 AllowUsers
비슷합니다.
물론, 또한 사용하면 BatchMode
클라이언트에서 비밀번호를 묻는 것이 비활성화되므로(맨 페이지의 첫 번째 항목) 조합이 -o BatchMode=yes -o PreferredAuthentications=password
그다지 유용하지 않습니다.
실제로 시스템에 로그인하여 어떤 인증 방법이 작동하는지 확인해야 합니다. 해당 키를 사용하여 로그인할 수 있으면 해당 키가 사용 중인 것입니다. 비밀번호를 사용하여 로그인할 수 있으면 해당 비밀번호가 사용 중인 것입니다. 로그인한 후 PermitRootLogin
값이 yes
(기본값은 prohibit-password
)이고 해당 루트에 authorized_keys
포함해야 하는 키가 포함되어 있고 다른 키는 없는지 확인합니다 .
답변2
이건 확인하지 않으셨으면 좋겠습니다.
SSH 서버를 사용하면 서버 외부에서 내부 구성에 대한 이러한 종류의 정보를 얻을 수 없습니다. 그렇지 않으면 보안 위험이 발생합니다.
이 목표를 달성하면 openssh 개발자에게 기술을 버그로 보고해 주세요.