เป็นไปได้ไหมที่จะรัน ssh-copy-id บนพอร์ตอื่นที่ไม่ใช่ 22?


99

ฉันมีเซิร์ฟเวอร์ที่มี SSH ทำงานอยู่บนพอร์ตที่ไม่ได้มาตรฐาน แทนที่จะเป็น 22 มันทำงานบน 8129 ฉันใช้:

ssh -p 8129 hostname

ตอนนี้เมื่อใดก็ตามที่ฉันต้องตั้งค่าคีย์สำหรับการเข้าสู่ระบบโดยไม่ใช้รหัสผ่านฉันต้องคัดลอกกุญแจสาธารณะและเพิ่มลงใน authorized_keys ด้วยตนเอง ฉันค้นพบว่าคำสั่งssh-copy-idสามารถใช้เพื่อทำให้กระบวนการนี้ง่ายขึ้น แต่ดูเหมือนว่าจะไม่มีตัวเลือกในการระบุพอร์ตของเซิร์ฟเวอร์ ssh

มีวิธีบอกssh-copy-idให้ใช้พอร์ต 8129 หรือฉันควรลืมคำสั่งนี้และคัดลอก / วางด้วยตนเองเหมือนก่อน

คำตอบ:


112
$ ssh-copy-id "-p 8129 user@host"

ที่มา: http://it-ride.blogspot.com/2009/11/use-ssh-copy-id-on-different-port.html

หมายเหตุ:พอร์ตจะต้องอยู่ด้านหน้าของ user @ host มิฉะนั้นจะไม่สามารถแก้ไขได้


11
มันโง่จริงๆที่sshมีไวยากรณ์ssh -p 1234 user@host, และในที่สุดssh-copy-id "-p 1234 user@host" scp -P 1234 user@hostมันจะดีมากหากมีไวยากรณ์เดียวกัน
Tombart

2
@Tombart แล้ว rsync rsync -e "ssh -p 1234" user@hostมี ฉันสาบานว่ามันจะยุ่งยากมากกว่าที่ควรจะเป็นหากใช้พอร์ตแบบกำหนดเอง
garetmckinley

1
คำตอบของ @Colt McCormack อธิบายว่าสิ่งนี้ได้รับการปรับปรุงในเวอร์ชันใหม่และไม่จำเป็นต้องใช้ไวยากรณ์ที่แปลกประหลาดอีกต่อไป
meshy

1
FYI คำสั่งแบบเต็มต้องการ IP ที่พิมพ์เป็นสองครั้งและควรมีลักษณะดังนี้:ssh-copy-id "root@192.168.0.100 -p 12345" -i ~/.ssh/id_rsa.pub 192.168.0.100
ทำให้

1
บน macOS (ฉันใช้ High Sierra) ไม่จำเป็นต้องใส่เครื่องหมายคำพูด กล่าวคือ ssh-copy-id -p 8129 user@hostโรงงาน
Arjun Mehta

46

ssh-copy-idไม่ได้รับการขัดแย้งใด ๆ ที่มันสามารถส่งผ่านไปยังsshคำสั่งพื้นฐานแต่คุณสามารถกำหนดค่านามแฝง~/.ssh/configมา

Host myhost
HostName hostname
Port 8129

ssh-copy-id myhostจากนั้นเรียก


3
สิ่งนี้ยังมีประโยชน์ในการลบความต้องการสำหรับการ-pตั้งค่าสถานะในsshความพยายามปกติ ดังนั้นจึงไม่ใช่แค่คำตอบที่ถูกต้องสำหรับคำถามนี้ แต่เป็นสิ่งที่ถูกต้องประจำเดือน
Warren Young

ขอบคุณสำหรับสิ่งนี้. บรรทัดที่ 2 "ชื่อโฮสต์ชื่อโฮสต์" ไม่จำเป็นถ้าคุณพอใจกับชื่อโฮสต์ตามธรรมชาติของโฮสต์
Lonniebiz

17

ตั้งแต่ openssh-client_6.2 ขณะนี้มีพอร์ตแฟล็กเฉพาะสำหรับคำสั่งที่อนุญาตให้ใช้ไวยากรณ์นี้:

ssh-copy-id -p 8129 user@example

นอกจากนี้ยังเพิ่มการสนับสนุนสำหรับการเพิ่มตัวเลือก ssh อื่น ๆ ด้วยแฟล็ก -o

นี่คือ man page ของ Ubuntu สำหรับรุ่นที่เหมาะสมเปิดตัวใน 13.04: http://manpages.ubuntu.com/manpages/saucy/man1/ssh-copy-id.1.html


3
นี่เป็นวิธีการเดียวที่ทำงานสำหรับ
Luca Steeb

11

การดูแหล่งที่มาอย่างรวดเร็วบ่งชี้ว่าssh-copy-idดูเหมือนจะไม่มีฟังก์ชั่นที่อนุญาตสิ่งนี้ อย่างไรก็ตามคุณสามารถทำสิ่งต่อไปนี้แทน:

ssh -p8129 user@host 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_*.pub


5

ฉันมักใช้scpเพื่อคัดลอกไป:

scp -P 8129 ~/.ssh/id_*.pub user@host:
ssh -p 8129 user@host 'cat id_*.pub >> ~/.ssh/authorized_keys'

แม้ว่าฉันต้องบอกว่าฉันอาจจะใช้วิธีอื่น (หนึ่งบรรทัด / การเชื่อมต่อ) หากฉันจำได้ในอนาคต แต่นี่เป็นอีกทางเลือกหนึ่งสำหรับคุณ


2

บน CentOS7 เป็นเพียง:

 ssh-copy-id "-p 1234" user@host

โปรดระวังอย่าวาง user @ host ไว้ในเครื่องหมายคำพูดหรือคุณจะได้รับข้อผิดพลาดต่อไปนี้ในการเผยแพร่นี้:

/usr/bin/ssh-copy-id: ERROR: Bad port ' 1234 user@host'


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