เป็นไปได้ไหมที่จะใช้ไฟล์. netrc บน Windows เมื่อฉันใช้ Git เพื่อโคลนที่เก็บข้อมูลระยะไกลด้วย HTTP และรหัสผ่านผู้ใช้?
เป็นไปได้ไหมที่จะใช้ไฟล์. netrc บน Windows เมื่อฉันใช้ Git เพื่อโคลนที่เก็บข้อมูลระยะไกลด้วย HTTP และรหัสผ่านผู้ใช้?
คำตอบ:
เป็นไปได้หรือไม่ที่จะใช้
.netrcไฟล์บน Windows
ใช่: คุณต้อง:
%HOME%(pre-Git 2.0 ไม่จำเป็นต้องใช้กับ Git 2.0+ อีกต่อไป)_netrcไฟล์ใน%HOME%หากคุณใช้ Windows 7/10 ในCMDเซสชันให้พิมพ์:
setx HOME %USERPROFILE%
และ%HOME%จะถูกตั้งค่าเป็น ' C:\Users\"username"'
ไปที่โฟลเดอร์นั้น ( cd %HOME%) แล้วสร้างไฟล์ชื่อ ' _netrc'
หมายเหตุ: อีกครั้งสำหรับ Windows คุณต้องมี ' _netrc' ไฟล์ไม่ว่า ' .netrc' ไฟล์
เนื้อหามันค่อนข้างมาตรฐาน (แทนที่<examples>ด้วยค่าของคุณ):
machine <hostname1>
login <login1>
password <password1>
machine <hostname2>
login <login2>
password <password2>
ลุคกล่าวถึงในความคิดเห็น:
การใช้ msysgit เวอร์ชันล่าสุดบน Windows 7 ฉันไม่จำเป็นต้องตั้งค่า
HOMEตัวแปรสภาพแวดล้อม_netrcไฟล์เพียงอย่างเดียวไม่หลอกลวง
นี่คือสิ่งที่ฉันพูดถึงใน " กำลังพยายาม" install"github .sshไม่ได้อยู่ที่นั่น ":
git-cmd.batรวมอยู่ใน msysgit จะตั้งค่า%HOME%ตัวแปรสภาพแวดล้อม:
@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%
爱国者เชื่อในความคิดเห็นที่ว่า "ดูเหมือนว่าจะไม่ทำงานสำหรับโปรโตคอล HTTP"
อย่างไรก็ตามฉันตอบว่าnetrcถูกใช้โดยcurlและทำงานกับโปรโตคอล HTTP ดังที่แสดงในตัวอย่างนี้ (มองหา ' netrc' ในหน้า): ใช้กับโปรโตคอล HTTP ที่นี่: " _netrc/ .netrcทางเลือกcURL "
กับดักทั่วไปที่มีnetrcการสนับสนุนบน Windows นั้นคอมไพล์จะข้ามการใช้งานหาก url https ต้นทางระบุชื่อผู้ใช้
ตัวอย่างเช่นหาก.git/configไฟล์ของคุณมี:
[รีโมท "กำเนิด"]
fetch = + refs / heads / *: refs / remotes / origin / *
url = https: //bob@code.google.com/p/my-project/
Git จะไม่แก้ไขข้อมูลประจำตัวของคุณผ่าน_netrcเพื่อแก้ไขการลบชื่อผู้ใช้ของคุณเช่น:
[รีโมท "กำเนิด"]
fetch = + refs / heads / *: refs / remotes / origin / *
url = https://code.google.com/p/my-project/
วิธีการแก้ปัญหาทางเลือก: ด้วยรุ่นคอมไพล์ 1.7.9+ (มกราคม 2012): คำตอบนี้จากมาร์ค Longairรายละเอียดของกลไกการแคชข้อมูลประจำตัวที่ยังช่วยให้คุณไม่ได้เก็บรหัสผ่านของคุณในข้อความธรรมดาที่แสดงด้านล่าง
ด้วยGit 1.8.3 (เมษายน 2013):
ตอนนี้คุณสามารถใช้. netrc ที่เข้ารหัสได้ (พร้อมgpg)
บน Windows: %HOME%/_netrc( _ไม่ใช่ ' .')
มีการเพิ่มตัวช่วยข้อมูลรับรองแบบอ่านอย่างเดียว (เป็น
contrib/) เพื่อโต้ตอบกับ.netrc/.authinfoไฟล์
สคริปต์นั้นจะช่วยให้คุณใช้ไฟล์ netrc ที่เข้ารหัสโดย gpgหลีกเลี่ยงปัญหาในการเก็บข้อมูลรับรองของคุณในไฟล์ข้อความธรรมดา
ไฟล์ที่มี
.gpgนามสกุลจะถูกถอดรหัสโดย GPG ก่อนที่จะแยกวิเคราะห์ ข้อโต้แย้ง
หลาย-fข้อตกลง รายการเหล่านี้จะได้รับการดำเนินการตามลำดับและรายการแรกที่พบที่ตรงกันจะถูกส่งคืนผ่านโปรโตคอลตัวช่วยข้อมูลรับรองเมื่อไม่มี
-fตัวเลือกที่จะได้รับ.authinfo.gpg,.netrc.gpg,.authinfoและ.netrcไฟล์ในไดเรกทอรีบ้านของคุณที่ใช้ในการสั่งซื้อนี้
วิธีเปิดใช้งานตัวช่วยข้อมูลรับรองนี้:
git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
(โปรดทราบว่า Git จะเติม
git-credential-ชื่อผู้ช่วยเหลือ "" ไว้ล่วงหน้าแล้วมองหามันในเส้นทาง)
# and if you want lots of debugging info:
git config credential.helper '$shortname -f AUTHFILE -d'
#or to see the files opened and data found:
git config credential.helper '$shortname -f AUTHFILE -v'
ดูตัวอย่างเต็มรูปแบบได้ที่ " มีวิธีข้ามรหัสผ่านพิมพ์เมื่อใช้https:// github "
ด้วย Git 2.18+ (มิถุนายน 2018) ตอนนี้คุณสามารถปรับแต่งโปรแกรม GPG ที่ใช้ในการถอดรหัส.netrcไฟล์ที่เข้ารหัส
ดูกระทำ 786ef50 , กระทำ f07eeed (12 พฤษภาคม 2018) โดยหลุยส์ Marsano ( ``)
(รวมโดยJunio C Hamano - gitster-ในการกระทำ 017b7c5 , 30 พฤษภาคม 2018)
git-credential-netrc: ยอมรับgpgตัวเลือก
git-credential-netrcถูก hardcoded เพื่อถอดรหัสด้วย 'gpg' โดยไม่คำนึงถึงตัวเลือก gpg.program
นี่เป็นปัญหาของการแจกแจงอย่าง Debian ที่เรียก GnuPG ที่ทันสมัยอย่างอื่นเช่น 'gpg2'
http.proxyตัวแปรสภาพแวดล้อมของคุณ หรือตรงกันข้ามเพื่อเพิ่มเซิร์ฟเวอร์ของคุณไปยังno_proxyตัวแปรเพื่อหลีกเลี่ยงการพยายามเข้าถึงเซิร์ฟเวอร์ LAN ผ่าน WAN
msysgitเมื่อใช้ Windows 7 เวอร์ชันล่าสุดฉันไม่จำเป็นต้องตั้งค่าHOMEตัวแปรสภาพแวดล้อม _netrcไฟล์เพียงอย่างเดียวไม่หลอกลวง
นอกจากนี้คุณยังสามารถติดตั้งGit ตัวจัดการข้อมูลประจำสำหรับ Windowsเพื่อบันทึก Git รหัสผ่านใน Windows _netrcผู้จัดการข้อมูลประจำตัวแทน นี่เป็นวิธีที่ปลอดภัยกว่าในการจัดเก็บรหัสผ่าน
.netrcไฟล์ที่เข้ารหัส คุณจะไม่ต้องป้อนข้อมูลรับรองเหล่านั้นแม้แต่ครั้งเดียวในระหว่างเซสชัน
สิ่งนี้จะทำให้ Git รับรองความถูกต้องบน HTTPS โดยใช้.netrc:
_netrcc:\Users\<username>HOME=%USERPROFILE%(ตั้งค่าตัวแปรสภาพแวดล้อมทั่วทั้งระบบโดยใช้ตัวเลือก System ในแผงควบคุมทั้งนี้ขึ้นอยู่กับเวอร์ชั่นของ Windows คุณอาจต้องเลือก "Advanced Options"_netrcไฟล์ต้องไม่มีช่องว่าง (การอ้างอิงรหัสผ่านจะไม่ทำงาน)ฉันกำลังโพสต์วิธีใช้_netrcในการดาวน์โหลดเอกสารจากเว็บไซต์ www.course.com
หากมีใครบางคนกำลังใช้ coursera-dl เพื่อดาวน์โหลดวัสดุแบบเปิดใน www.coursera.com และใน Windows OS มีคนต้องการใช้ไฟล์เช่น ".netrc" ซึ่งอยู่ใน like-Unix OS เพื่อเพิ่ม ตัวเลือก-nแทน-U <username> -P <password>เพื่อความสะดวก เขา / เธอสามารถทำสิ่งนี้ได้:
ตรวจสอบเส้นทางบ้านบน Windows OS: setx HOME %USERPROFILE%(ดูคำตอบของ VonC ) มันจะบันทึกตัวแปรสภาพแวดล้อมเป็นHOMEC:\Users\"username"
ค้นหาลงในไดเรกทอรีและสร้างชื่อไฟล์C:\Users\"username" หมายเหตุ: ไม่มีคำต่อท้ายใด ๆ
เนื้อหาเหมือน:_netrcmachine coursera-dl login <user> password <pass>
ใช้คำสั่งที่ต้องการcoursera-dl -n --path PATH <course name>ดาวน์โหลดสื่อการเรียน รายละเอียดตัวเลือกเพิ่มเติมสำหรับ coursera-dl สำหรับหน้านี้
HOMEตัวแปรสภาพแวดล้อมมีความสำคัญเนื่องจากไม่ได้กำหนดไว้ตามค่าเริ่มต้นใน Windows คุณสามารถตั้งค่าตัวแปรนั้นเป็นไดเรกทอรีใดก็ได้ที่คุณต้องการ (ไม่ต้องเป็นC:\users\mylogin): ตัวอย่างเช่นที่ทำงานฉันตั้งค่าเป็นดิสก์ระยะไกลส่วนตัวที่เชื่อมโยงกับบัญชี Windows ของฉันซึ่งช่วยให้ฉันสามารถสลับเดสก์ท็อปโดยไม่ต้องสูญเสีย ของฉัน.sshหรือ_netrcการตั้งค่า