ระบุพอร์ต SSH สำหรับ Git


18

ฉันใช้พอร์ต ssh ที่ไม่ได้มาตรฐาน (1234) สำหรับเซิร์ฟเวอร์ส่วนใหญ่ที่ฉันเชื่อมต่อ ดังนั้นในไฟล์ config ssh ของฉันฉันมี:

Port 1234

แต่ github.com ใช้พอร์ต 22 เมื่อฉันพยายามเชื่อมต่อกับ github มันจะพยายามใช้พอร์ต 1234 อย่างเห็นได้ชัดตอนนี้ฉันต้องแก้ไขการตั้งค่า ssh เพื่อให้ใช้งานได้

นี่เป็นตัวอย่างจากการตั้งค่า git ของฉัน:

[remote "origin"]
        url = git@github.com:asdf/asdf.git

คำตอบ:


27

เพียงแค่ดูวิธีการตั้งค่าไฟล์~ / .ssh / config ของคุณอย่างถูกต้อง (man 5 ssh_config) คุณสามารถระบุการตั้งค่าที่แตกต่างกันสำหรับโฮสต์ที่ต่างกันได้อย่างง่ายดาย เพื่อแก้ปัญหาของคุณคุณจะตั้ง

Host github.com
Port 22
Host *
Port 1234

ลองดูที่หน้าคู่มือ ssh_config มันอธิบายทุกสิ่งที่คุณจำเป็นต้องรู้ในสองสามหน้าแรก


24

การตั้งค่าส่วนใน~/.ssh/configเป็นวิธีการแก้ปัญหาที่ดี แต่อาจมีประโยชน์ที่จะทราบเกี่ยวกับวิธีอื่น

ไวยากรณ์เหมือนscpทั่วไปของuser@host:pathไม่มีที่สำหรับพอร์ต แต่ Git ยังรองรับssh:รูปแบบ URL ที่สามารถใช้เพื่อระบุพอร์ต:

ssh://git@github.com:22/asdf/asdf.git

ในขณะที่ssh:URL รองรับคุณสมบัติของพอร์ต แต่ก็ไม่รองรับพา ธ ที่สัมพันธ์กัน (เช่นไม่มีทางเทียบเท่าโดยตรงกับไวยากรณ์เหมือนของscpuser@host:pathที่pathไม่ได้เริ่มต้นด้วยเครื่องหมายสแลช)

GitHub ปฏิบัติต่อสัมพัทธ์และพา ธ สัมบูรณ์เหมือนกันดังนั้นจึงใช้งานได้สำหรับพวกเขา แต่อาจใช้ไม่ได้กับที่เก็บ Git ที่ใช้ SSH ทั้งหมด สำหรับการโฮสต์ที่ใช้ SSH แบบง่ายคุณอาจต้องแทรก/home/username/หรือ/Users/username/เมื่อเปลี่ยนจากสัมพันธ์กับพา ธ สัมบูรณ์ ระบบโฮสติ้งบางระบบอาจไม่รองรับพา ธ สัมบูรณ์เลย (แม้ว่าฉันจะเรียกว่าขาดการสนับสนุนบั๊ก)


ขอบคุณคริส ฉันชอบเส้นทางนี้ดีที่สุดเพราะมันไม่ต้องการการล้อเล่นด้วยการตั้งค่า ssh ของฉัน ขอบคุณ!
James Ward

1
fyi, ถ้าเซิร์ฟเวอร์มี repo "bare" ดังนั้นสตริงการเชื่อมต่อจะมีลักษณะเหมือนssh://git@github.com:22/asdf/asdf(โดยไม่ต้อง. git)
Xeoncross

3

(รักเมื่อพบคำตอบทันทีหลังจากถาม)

ฉันแก้ไข ssh config เพื่อระบุพอร์ตสำหรับแต่ละโฮสต์แทนที่จะเป็นการตั้งค่าร่วม:

Host asdf.com
    Port 1234

Host github.com
    User git
    Hostname github.com
    Port 22

2

พบลิงค์นี้และแม้ว่าจะเป็นประโยชน์กับรายการบล็อกของฉันอาจช่วยชี้แจง:

https://prestongarrison.com/change-port-git-is-using-for-ssh/

โดยทั่วไปฉันคิดว่ามันจะดีกว่าเพียงแค่แก้ไขไฟล์. git / config ของคุณและทำการเปลี่ยนแปลง

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