ในกรณีของฉันฉันต้องการชำระเงิน SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
อย่างไรก็ตามฉันต้องการมีรหัสผ่านในหนึ่งบรรทัดเพื่อไม่ให้ปรากฏขึ้น
ในกรณีของฉันฉันต้องการชำระเงิน SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
อย่างไรก็ตามฉันต้องการมีรหัสผ่านในหนึ่งบรรทัดเพื่อไม่ให้ปรากฏขึ้น
คำตอบ:
svn co svn + ssh: // ชื่อผู้ใช้: password@10.106.191.164/home/svn/shproject
ระบุว่าคุณกำลังใช้ SSH วิธีที่ต้องการคือใช้รหัสสาธารณะสำหรับการให้สิทธิ์ซึ่งจะช่วยประหยัดความต้องการของรหัสผ่านโดยสมบูรณ์
อนันต์ดีกว่าคือการสร้าง keypair ในฐานะผู้ใช้ในพื้นที่ของคุณ:
$ ssh-keygen -t rsa
(ยอมรับค่าเริ่มต้นทั้งหมด)
จากนั้นนำเนื้อหาของ. ssh / id_rsa.pub และเพิ่มลงในเซิร์ฟเวอร์ระยะไกลไปยัง. ssh / authorized_keys ให้แน่ใจว่ามันถูกวางทั้งหมดในบรรทัดเดียวกัน ตรวจสอบให้แน่ใจด้วยเช่นกันว่าการอนุญาตของไดเรกทอรี. ssh คือ 600
จากนั้นคุณควรจะสามารถ ssh ได้โดยไม่ต้องใส่รหัสผ่าน
แทนที่จะใช้รหัสผ่านคุณอาจต้องการดูคู่คีย์ส่วนตัว / สาธารณะและใช้ ssh นั้น การแจกแจงลินุกซ์ส่วนใหญ่มาพร้อมกับคำสั่งที่ใช้งานง่ายเพื่อสร้างคู่ดังกล่าว อย่างไรก็ตามสิ่งนี้ต้องการการเข้าถึงด้านเซิร์ฟเวอร์ (หนึ่งครั้ง) เพื่อฝากไฟล์พับลิกคีย์ในไฟล์ ~ / .ssh / authorized_keys ของผู้ใช้
ดีฉันไม่ต้องการที่จะป้อนรหัสผ่าน - ฉันไม่ชอบพึ่งพารหัสผ่านของฉันถูกบันทึกไว้ที่ใดที่หนึ่ง; อย่างไรก็ตามฉันต้องการป้อนหนึ่งครั้งต่อชุดคำสั่ง svn + ssh; และบ่อยครั้งที่คุณต้องการทำอย่างใดอย่างหนึ่งsvn checkout
- และต้องป้อนรหัสผ่านมากมายเลย ในกรณีเช่นนี้ฉันต้องการพิมพ์รหัสผ่านเพียงครั้งเดียว
ดังนั้นมีเพียงคำตอบของ@Boinstและ@Mariusเท่านั้นที่เกี่ยวข้องกับกรณีการใช้งานของฉัน น่าเสียดายที่พวกเขาไม่ได้ช่วยเพราะฉันไม่สามารถทำงานได้ ฉันสงสัยว่าผู้เขียนโพสต์ลองคำสั่งก่อนที่จะโพสต์หรือไม่เพราะตอนนี้ฉันนึกภาพไม่ออกว่าจะทำงานได้อย่างไร - นี่คือการทดสอบที่ทำในเครื่องบน Ubuntu 10.04 PC ของฉัน (และฉันหยุดใช้ Ctrl-C ทุกครั้งที่เห็น รหัสผ่านปรากฏขึ้น):
$ svn --version | head -1
svn, version 1.6.6 (r40053)
$ cd /tmp
$ svnadmin create myrepo
$ read -p 'ssh myself@127.0.0.1? ' PASS
ssh myself@127.0.0.1? [type _PASSWORD_, press ENTER]
## trying first with https://superuser.com/a/71479/39752
# (specify in URL user:pass separated by colon)
## plain ssh - asks for password anyway:
$ ssh myself:$PASS@127.0.0.1
myself:_PASSWORD_@127.0.0.1's password: ^C
# svn - with just username, as expected:
$ svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
myself@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly
# svn - with password added to URL, asks for password anyway:
$ svn co svn+ssh://myself:$PASS@127.0.0.1/tmp/myrepo myrepo-wc
myself:_PASSWORD_@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly
# trying then with https://superuser.com/a/380426/39752, https://superuser.com/a/327822/39752
# (--non-interactive and --username/--password on command line)
# svn - asks for password anyway:
$ svn co svn+ssh://myself@127.0.0.1/tmp/myrepo --non-interactive --trust-server-cert --username myself --password $PASS --no-auth-cache
myself@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly
เท่าที่--username/--password
เกี่ยวกับsvn
บรรทัดคำสั่งที่เกี่ยวข้อง - ที่ไม่สำคัญsvn+ssh
เพราะมันssh
ถามไม่svn
:
svn - การโค่นล้มโดยไม่สนใจตัวเลือก "- รหัสผ่าน" และ "- ชื่อผู้ใช้" - Stack Overflow
พรอมต์ที่คุณได้รับดูเหมือนจะไม่ถูกโค่นล้มเพื่อขอรหัสผ่านดูเหมือนว่า ssh จะขอรหัสผ่าน
นอกจากนี้เมื่อมีการบันทึกแสดงว่าssh
ตัวเองไม่ยอมรับ " username:password@...
" ใน URL - และไม่ทำsvn
เช่นนั้น เหตุใดจึงเป็นที่ยอมรับได้ที่จะใช้ชื่อผู้ใช้เท่านั้นใน URL ในsvn
อาจอธิบายได้ใน~/.subversion/config
:
### (หาก URL มีชื่อผู้ใช้ชื่อโฮสต์จะถูก
ส่งผ่าน ### ไปยังเอเจนต์ช่องสัญญาณเป็น @)
แจ้งให้ทราบล่วงหน้าไม่มีอะไร<user>:<pass>@<hostname>
จะพูดเกี่ยวกับ
ตอนนี้ต้องขอบคุณการโค่นล้มหน้าSVN + SSH บน Debianในที่สุดฉันก็รู้ว่ามีSVN_SSH
ตัวแปรสภาพแวดล้อมที่ใช้ใน~/.subversion/config
อุโมงค์ ssh (ฉันเดา); และในที่สุดก็เปิดโอกาสที่จะใช้โปรแกรมsshpass
เพื่อจัดการรหัสผ่านในลักษณะแบบทางเดียว:
$ SSHPASS=$PASS SVN_SSH="sshpass -e ssh" svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
Checked out revision 0.
อย่างน้อยฉันก็ดีใจที่ในที่สุดฉันก็พบวิธีแก้ปัญหาที่เหมาะกับฉัน - หวังว่านี่จะช่วยคนอื่นด้วยเช่นกัน
ไชโย!
svn co svn+ssh://10.106.191.164/home/svn/shproject --non-interactive --trust-server-cert --username <username> --password <password> --no-auth-cache
ฉันคิดว่าการใช้sshpass (ใน Linux) เป็นวิธีที่ดีที่สุดในการรับสิ่งนี้
ติดตั้ง sshpass
$ sudo apt-get install sshpass
ตั้งค่าตัวแปรสภาพแวดล้อมชั่วคราว
$ export SSHPASS=*yourpass*
แก้ไขไฟล์ svn config
$ nano ~/.subversion/config
ในที่สุดความคิดเห็นออกเพิ่มsshpass -e
ในบรรทัด ssh ก่อนssh
คำสั่ง
ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no