자격 증명을 .netrc 파일에 저장한 다음 해당 파일을 읽어서 컬 명령에 전달하고 나중에 사용할 수 있도록 반환된 쿠키 파일을 저장하는 스크립트를 작성하려고 합니다. 제가 관심 있는 것은 이것이 사용자 이름과 비밀번호를 안전하게 전달하는 방법인지, 중간자 공격이 있는 경우, 제가 액세스하려는 서버가 HTTP를 통해 액세스된다면 그들은 어떻게 될까요? 자격 증명을 스니핑할 수 있습니다.
#!/bin/bash
IP="192.168.0.1"
user="Administrator"
pass="Password1234"
function credentials {
mkdir "${HOME}"/.netrc
rm "${HOME}"/.netrc/credentials.txt
touch "${HOME}"/.netrc/credentials.txt
{ echo "machine ${IP}"; echo "login ${user}"; echo "password ${pass}"; } >> "${HOME}"/.netrc/credentials.txt
chmod 600 "${HOME}"/.netrc/credentials.txt
}
function cookie {
curl -v -c cookie.txt -n "${HOME}"/.netrc/credentials.txt http://"${IP}"/setup.php
}
credentials
cookie
자격 증명.txt 파일이 해당 디렉터리에 올바르게 저장되었는지, 자격 증명에 올바른 권한이 있는지 확인했지만 쿠키 기능을 실행하려고 하면 다음 오류가 발생합니다 Couldn't find host 192.168.0.1 in the .netrc file; using defaults
. Curl이 자격 증명.txt 파일에서 구성된 사용자 이름과 비밀번호를 가져올 수 없는 이유는 무엇입니까?
답변1
내가 이해한 바에 따르면(curl의) 매뉴얼 페이지에서는 이 옵션을 사용 하면 파일을 -n
찾을 수만 .netrc
있고 파일에 대한 파일 경로는 필요하지 않습니다. 이것이 옵션입니다 --netrc-file
. 매뉴얼 페이지에서:
--netrc-file
This option is similar to --netrc, except that you provide the
path (absolute or relative) to the netrc file that Curl should use.
You can only specify one netrc file per invocation. If several
--netrc-file options are provided, only the last one will be used.
(Added in 7.21.5)
This option overrides any use of --netrc as they are mutually
exclusive. It will also abide by --netrc-optional if specified.