Linux 클라이언트에서 PubkeyAuthentication이 필요한 Windows OpenSSH 서버로 SSH를 사용하는 방법

Linux 클라이언트에서 PubkeyAuthentication이 필요한 Windows OpenSSH 서버로 SSH를 사용하는 방법

이와 같은 게시물이 백만 개 있다는 것을 알고 있지만 이 질문에 답하는 게시물을 찾지 못했습니다.

Ubuntu 18.04 클라이언트에서 Windows-10 v1903 버전의 내장 OpenSSH SSH 서버로 SSH 연결을 설정하려고 합니다. 저는 인터넷 도메인이 없기 때문에 Windows 호스트는 ISP가 할당한 외부 IP 주소를 사용하는 인터넷에서만 볼 수 있습니다. 보안 강화를 위해 Windows SSH 서버에서 공개 키 인증과 사용자 비밀번호 인증을 요구하고 싶습니다. 또한 SSH용 대체 포트를 사용하도록 Windows 서버를 구성했습니다.

Windows 호스트에서 test_user로 로그인한 동안 "ssh-keygen -t ecdsa" 명령을 사용하여 사용자 키 쌍(비밀번호 포함)을 생성하고 이를 Windows 관리 명령 프롬프트에서 "test_user_key" 파일에 저장했습니다. C:\Users\test_user.ssh\authorized_keys가 비어 있고 \ProgramData\ssh\authorized_keys 파일이 전혀 없는 경우에도 "ssh-add test_user_key"를 사용하고 "ssh-add -l"을 사용하여 사용자를 나열하는지 확인했습니다. ! 그런 다음 생성된 test_user_key 개인 키를 Ubuntu 클라이언트의 /home/xxx/.ssh에 복사하고 권한을 600으로 설정했습니다.

"PubkeyAuthentication yes" 및 "PasswordAuthentication yes"가 구성되어 있지만 "AuthenticationMethods"가 주석 처리된 Windows SSH Server\ProgramData\ssh\sshd_config를 사용하여 "ssh -p 15001 -i test_user_key" 명령을 사용하여 로컬에서 구성을 테스트했습니다.[이메일 보호됨]" 그리고 test_user 키의 비밀번호와 test_user 계정의 비밀번호를 입력한 후 netstat를 사용하여 연결이 설정되고 확인됩니다.

"AuthenticationMethods publickey,password"를 활성화하도록 Windows sshd_config를 재구성한 다음 Windows Server 서비스를 다시 시작하고 "ssh -p 15001"을 사용하여 연결을 시도하는 경우[이메일 보호됨]"Linux에서 Windows로 전환하면 즉시 거부됩니다(즉, 키 비밀번호를 입력하라는 메시지가 표시되지 않음)."[이메일 보호됨]: 권한이 거부되었습니다(공개 키). "역시 열쇠를 제공하지 못했기 때문에.

그런 다음 "ssh -p 15001 -i test_user_key" 명령을 사용하여 개인 키를 제공했습니다.[이메일 보호됨]"키에 대한 비밀번호를 묻는 메시지가 표시되었지만 동일한 메시지를 받았습니다."[이메일 보호됨]비밀번호를 입력하면 "권한이 거부되었습니다(공개 키)"라는 메시지가 나타납니다.

문제는 실제 test_user_key.pub 키가 대신 "test_user@HOSTNAME"으로 끝나는 것 같습니다.[이메일 보호됨]. 그러나 호스트 이름 대신 IP 주소를 사용하여 ssh-keygen을 사용하여 키 쌍을 생성하는 방법을 찾을 수 없습니다.

물론 결국 ISP가 할당한 외부 IP 주소를 사용하여 키 쌍을 만들어야 했습니다. 하지만...

(1) sshd_config에서 AuthenticationMethods를 활성화한 후 로컬로 연결을 설정할 수도 없습니다.

(2) AuthenticationMethos가 비활성화되면 Windows 서버는 "PubkeyAuthentication"이 활성화되어 있어도 키 파일 없이 연결을 허용합니다.

(3) Windows의 Authorized_keys가 비어 있는 이유는 무엇입니까?

돕다!

답변1

  1. Authorized_keys 파일이 비어 있기 때문에 공개 키 인증에 실패했습니다.

    공개 키를 추가하지 않았기 때문에 비어 있습니다. cd먼저 Windows 상자의 test_users .ssh 디렉터리에 추가하고 다음 명령을 실행하여 추가 할 수 있습니다 .

    cat id_ecdsa.pub >> authorized_keys
    

    (또는 무엇이든사람들키가 아닌 경우 파일 이름은 입니다 id_ecdsa.pub. 아니요개인 키를 Authorized_keys에 복사)

    그런데,만약에SSH 클라이언트 컴퓨터에는 이미 공개 키와 개인 키 쌍이 있으며,authorized_keys 파일에 공개 키를 추가할 수 있습니다. 이는 작업을 수행하는 보다 일반적인 방법입니다. 클라이언트에서 키 쌍을 생성하고 서버에 공개 키(및 공개 키만)를 설치합니다. 서버는 클라이언트의 개인 키를 알 필요가 없으며 대부분의 경우 알 필요가 없습니다.

  2. Windows 호스트에서 클라이언트 시스템으로 키를 복사할 때 공개 키를 복사합니까, 아니면 개인 키를 복사합니까?

    SSH 클라이언트 시스템에는 다음이 필요합니다.사적인컴퓨터를 사용하여 원격 SSHD 서버에 인증합니다.

    ~/.ssh/또한 디렉터리 권한이 700이고 개인 키 파일 권한이 인지 확인해야 합니다 600.

  3. 마지막으로 공개 키 끝에 있는 이름(예: "test_user@HOSTNAME")은 관련이 없으며 단지 임의의 레이블일 뿐입니다.

관련 정보