git รีโมตเพิ่มด้วยพอร์ต SSH อื่น ๆ


336

ใน Git ฉันจะเพิ่มเซิร์ฟเวอร์ต้นทางระยะไกลได้อย่างไรเมื่อโฮสต์ของฉันใช้พอร์ต SSH อื่น

git remote add origin ssh://user@host/srv/git/example

คำตอบ:


573

คุณสามารถทำสิ่งนี้:

git remote add origin ssh://user@host:1234/srv/git/example

1234 คือพอร์ต ssh ที่ใช้งานอยู่


10
ขอบคุณ. เป็นแค่ส่วนเสริม: ในส่วนของพา ธ ให้ใช้พา ธ สัมบูรณ์ไม่ใช่เส้นทางสัมพัทธ์ไปยังโฮมได
เร็กตอรี่ของ

@Snicolas: ทำไมจะไม่ใช้เส้นทางญาติ?
Hannes

12
@Sincolas มันทำงานได้ถ้าคุณมี repo ในไดเรกทอรีบ้านของผู้ใช้: /home/someuser/git-repos/example.git -> ssh: // someuser @ <host>: <port> / ~ / git-repos / example.git btw: คุณได้รับ<name> .git repo โดยgit clone --bare <adress>
MartinL

@Jameo มันเป็นเส้นทางที่แน่นอน
igorw

48
โปรดทราบว่าจะไม่ทำงานหากคุณลบโปรโตคอล นั่นคือหากคุณลองทำสิ่งต่อไปนี้มันจะไม่ทำงาน git remote add origin user@host:1234/srv/git/example
Bijay Rungta

137

คุณต้องแก้ไขไฟล์ ~ / .ssh / config ของคุณ เพิ่มสิ่งต่อไปนี้:

Host example.com
    Port 1234

การค้นหา google อย่างรวดเร็วแสดงทรัพยากรที่แตกต่างกันสองสาม อย่างที่อธิบายในรายละเอียดมากกว่าฉัน


16
มันใช้งานได้สำหรับฉัน ฉันชอบวิธีนี้ดีกว่าติดในรีโมทคอมไพล์ ขอบคุณ! ไม่จำเป็นต้องระบุเส้นทางที่แน่นอนด้วยวิธีนี้
Michael van Rooijen

มันใช้งานได้ดี ด้วยวิธีนี้ฉันสามารถมีคีย์เฉพาะแทนค่าเริ่มต้น id_rsa ไม่เพียงแค่นั้นเซิร์ฟเวอร์ของฉันพิถีพิถันและคุณจะต้องมีอย่างรวดเร็วพอที่จะล้มเหลวถ้าคุณใส่รหัสผ่าน ดังนั้นฉันใช้PasswordAuthentication noเช่นกัน
Alexis Wilke

4
มันจะดีกว่าถ้าเอาไว้ในรีโมตแทนที่จะซ่อนไว้ในไฟล์ปรับแต่งแบบนี้: เมื่อคุณมีทุกอย่างในที่เดียวคุณจะไม่มีวันลืมหมายเลขพอร์ตอื่นและคุณสามารถคัดลอกและวาง URL เพื่อให้ผู้อื่นใช้
MarcH

1
@MarcH จริง ๆ แล้วมันขึ้นอยู่กับสถานการณ์ ฉันชอบใช้หมายเลขพอร์ตสุ่มใน VPS ของฉัน การมีพอร์ตในไฟล์กำหนดค่าเป็นวิธีหนึ่งที่คุณสามารถระงับข้อมูลนั้นจากผู้ทำงานร่วมกัน (นั่นคือเมื่อคุณมีหลายรีโมตโฮสต์การปรับใช้รีโมตจะแตกต่างจาก repo ซอร์สโค้ดภายใน)
Ragunath Jawahar

@RagunathJawahar ฉันไม่คิดว่าการใช้หมายเลขพอร์ตแบบสุ่มเป็นกรณีการใช้งานทั่วไป
MarcH

29

คำตอบที่ดีที่สุดใช้ไม่ได้สำหรับฉัน ฉันต้องการssh://จากการเริ่มต้น

# does not work
git remote set-url origin user@example.com:10000/aaa/bbbb/ccc.git
# work
git remote set-url origin ssh://user@example.com:10000/aaa/bbbb/ccc.git

17

สำหรับผู้ที่คุณกำลังแก้ไข ./.git/config

[remote "external"]                                                                                                                                                                                                                                                            
  url = ssh://evanc@www.foo.com:11720/aaa/bbb/ccc                                                                                                                                                                                                               
  fetch = +refs/heads/*:refs/remotes/external/* 

1
สมบูรณ์ แม้ว่าหนึ่งคำถามฉันจะทำเช่นนี้สำหรับ submodules ได้อย่างไร ดูเหมือนจะไม่ทำงาน
m4l490n

11

แทนที่จะใช้ssh://คำนำหน้าโพรโทคอลคุณสามารถใช้รูปแบบ URL ทั่วไปสำหรับการเข้าถึง git ผ่าน SSH โดยมีการเปลี่ยนแปลงเพียงเล็กน้อย เพื่อเป็นการเตือนความจำURL ทั่วไปคือ :

git@host:path/to/repo.git

หากต้องการระบุพอร์ตอื่นให้ใส่เครื่องหมายวงเล็บไว้รอบ ๆ ส่วนรวมuser@hostถึงพอร์ต:

[git@host:port]:path/to/repo.git

แต่ถ้าการเปลี่ยนพอร์ตเป็นเพียงชั่วคราวคุณสามารถบอกให้ git ใช้คำสั่ง SSH อื่นแทนการเปลี่ยน URL ระยะไกลของที่เก็บ:

export SSH_GIT_COMMAND='ssh -p port'
git clone git@host:path/to/repo.git # for instance

2
การเพิ่มวงเล็บเหลี่ยมรอบ git @ host: พอร์ตทำงานได้อย่างสวยงามสำหรับฉัน ฉันใช้ gitlab และเซิร์ฟเวอร์นั้นต้องใช้พอร์ตที่ไม่ได้มาตรฐาน แต่ฉันก็ไม่สามารถใช้เส้นทางที่แน่นอนไปยัง repo ได้ (ฉันไม่รู้) ขอบคุณ
Thomas Le

1
ดูเหมือนว่าวิธีที่ยืดหยุ่นที่สุดสำหรับฉันในขณะนี้รองรับเส้นทางญาติและไม่พึ่งพา ssh configs
user2882096
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.