현재 다음 명령을 사용하여 서버 인증서(FINGERPRINT) 및 OpenConnect
-Cookie를 가져오기 위한 인증 요청을 수행하고 있습니다.
openconnect --authenticate --user=<username> "VPN host"
따라서 나중에 나타나는 사용자 프롬프트에는 항상 비밀번호를 입력해야 합니다.
OpenConnect
상위 명령에 이미 비밀번호를 전달하는 옵션이 있습니까 ?
예를 들어, 명령을 확장하면...
openconnect --authenticate --user=<username> password=<password> "VPN host"
...?
도전 과제는 다음과 같습니다.
사용자루이 프리베이로명령에 비밀번호를 에코하고 싶습니다. 안타깝게도 서버가 두 번째 프롬프트(=비밀번호 프롬프트)에 도달하기 전에 사용자 프롬프트를 하나 더 제공하기 때문에 우리의 경우에는 작동하지 않습니다.
일어나는 일은 다음과 같습니다.
첫 번째 사용자 프롬프트: 서버가 말했습니다.
- "모든 트래픽을 전송할지 아니면 특정 트래픽만 전송할지 선택하세요..
- "입력
Tunnel all
하거나Tunnel company
".
두 번째 사용자 프롬프트: 서버가 다음과 같이 말합니다.
- "비밀번호를 입력해주세요."
보시다시피 간단한 질문은 echo
잘못된 답을 제공합니다. :-)
가능한 expect
스크립트의 경우 텍스트를 삽입하기 전의 실제(정확한) 서버 요청은 다음과 같습니다.
첫 번째 팁:
GROUP: [tunnel MyCompany|tunnel all]:
, 삽입할 답변은 다음과 같아야 합니다.tunnel MyCompany
두 번째 팁:
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