OpenConnect: 인증 요청 시 사용자 비밀번호를 전달하시겠습니까?

OpenConnect: 인증 요청 시 사용자 비밀번호를 전달하시겠습니까?

현재 다음 명령을 사용하여 서버 인증서(FINGERPRINT) 및 OpenConnect-Cookie를 가져오기 위한 인증 요청을 수행하고 있습니다.

openconnect --authenticate --user=<username> "VPN host"

따라서 나중에 나타나는 사용자 프롬프트에는 항상 비밀번호를 입력해야 합니다.

OpenConnect상위 명령에 이미 비밀번호를 전달하는 옵션이 있습니까 ?

예를 들어, 명령을 확장하면...

openconnect --authenticate --user=<username> password=<password> "VPN host"

...?


도전 과제는 다음과 같습니다.

사용자루이 프리베이로명령에 비밀번호를 에코하고 싶습니다. 안타깝게도 서버가 두 번째 프롬프트(=비밀번호 프롬프트)에 도달하기 전에 사용자 프롬프트를 하나 더 제공하기 때문에 우리의 경우에는 작동하지 않습니다.

일어나는 일은 다음과 같습니다.

  1. 첫 번째 사용자 프롬프트: 서버가 말했습니다.

    • "모든 트래픽을 전송할지 아니면 특정 트래픽만 전송할지 선택하세요..
    • "입력 Tunnel all하거나Tunnel company".
  2. 두 번째 사용자 프롬프트: 서버가 다음과 같이 말합니다.

    • "비밀번호를 입력해주세요."

보시다시피 간단한 질문은 echo잘못된 답을 제공합니다. :-)


가능한 expect스크립트의 경우 텍스트를 삽입하기 전의 실제(정확한) 서버 요청은 다음과 같습니다.

  1. 첫 번째 팁: GROUP: [tunnel MyCompany|tunnel all]:, 삽입할 답변은 다음과 같아야 합니다.tunnel MyCompany

  2. 두 번째 팁: Password:삽입할 답변은 다음과 같아야 합니다.123456789

답변1

일반적으로 VPN 소프트웨어는 보안 위험으로 간주되므로 사용자가 비밀번호를 입력하는 것을 허용하지 않습니다.

가능한 해결책 중 하나는 다음과 같이 비밀번호를 파이프하는 것입니다.

echo -e "Tunnel all\nYourPassword" | openconnect --authenticate --user=<username> "VPN host"

우리가 이야기하고 있는 것이 다음과 같은 스크립트 작성 방법에 관심이 있는 경우입니다.

  • 파일에 비밀번호를 저장하는 것의 보안 의미를 이해하고 파일에 대한 읽기 액세스를 openconnect명령을 실행하는 사용자로 제한하는 것이 중요합니다.

PS YourPassword를 실제 비밀번호로 바꾸세요.

답변2

이것은 나에게 효과적입니다.

echo 'your password' > passwd.auth
sudo openconnect <SERVER IP> --user=USERNAME --servercert sha256:<SHA256> --passwd-on-stdin < passwd.auth

관련 정보