เป็นไปได้ไหมที่จะใช้ไฟล์. 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
:
_netrc
c:\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 ) มันจะบันทึกตัวแปรสภาพแวดล้อมเป็นHOME
C:\Users\"username"
ค้นหาลงในไดเรกทอรีและสร้างชื่อไฟล์C:\Users\"username"
หมายเหตุ: ไม่มีคำต่อท้ายใด ๆ
เนื้อหาเหมือน:_netrc
machine coursera-dl login <user> password <pass>
ใช้คำสั่งที่ต้องการcoursera-dl -n --path PATH <course name>
ดาวน์โหลดสื่อการเรียน รายละเอียดตัวเลือกเพิ่มเติมสำหรับ coursera-dl สำหรับหน้านี้
HOME
ตัวแปรสภาพแวดล้อมมีความสำคัญเนื่องจากไม่ได้กำหนดไว้ตามค่าเริ่มต้นใน Windows คุณสามารถตั้งค่าตัวแปรนั้นเป็นไดเรกทอรีใดก็ได้ที่คุณต้องการ (ไม่ต้องเป็นC:\users\mylogin
): ตัวอย่างเช่นที่ทำงานฉันตั้งค่าเป็นดิสก์ระยะไกลส่วนตัวที่เชื่อมโยงกับบัญชี Windows ของฉันซึ่งช่วยให้ฉันสามารถสลับเดสก์ท็อปโดยไม่ต้องสูญเสีย ของฉัน.ssh
หรือ_netrc
การตั้งค่า