รหัสผ่าน ssh สำหรับชื่อผู้ใช้อื่นหรือไม่


14

ฉันต้องการทำการเชื่อมต่อ ssh ผ่านรหัสผ่านสำหรับโครงการการโค่นล้ม ตอนนี้ฉันกำลังใช้ ssh + svn และมันก็น่ารำคาญนิดหน่อยเพราะฉันต้องพิมพ์รหัสผ่านทุกครั้งที่ฉันต้องการทำธุรกรรมกับเซิร์ฟเวอร์

ฉันพบบทเรียนมากมายบนเว็บเกี่ยวกับวิธีสร้างคีย์สำหรับ ssh แบบไม่มีรหัสผ่าน แต่พวกเขาทั้งหมดคิดว่าฉันใช้ชื่อผู้ใช้เดียวกันกับระบบรีโมตเหมือนกับฉันเป็นระบบโฮมของฉัน อย่างไรก็ตามชื่อผู้ใช้ที่ฉันใช้สำหรับ ssh + svn นั้นแตกต่างจากชื่อบัญชีผู้ใช้ในระบบที่ฉันใช้งานอยู่ ฉันจะตั้งค่านี้อย่างถูกต้องได้อย่างไร ฉันไม่มีโชคกับการเปลี่ยนชื่อในไฟล์คีย์

คำตอบ:


15

คุณเพียงแค่ต้องระบุชื่อผู้ใช้ของระบบอื่นในsvnคำสั่ง:

$ svn co svn+ssh://otheruser@othersystem/path/to/repo

เพื่อตอบคำถามของคุณด้วย:

$ ssh otheruser@othersystem

สิ่งนี้ทำให้sshdเครื่องรีโมตค้นหา~otheruser/.ssh/authorized_keysคีย์สาธารณะที่สอดคล้องกับคีย์ส่วนตัวบนเครื่องที่คุณพิมพ์คำสั่ง


1
ดังนั้นส่วนหนึ่งของคำแนะนำคือการสร้างไฟล์.ssh/id_rsa.pubและอัปโหลดไปยังเซิร์ฟเวอร์ระยะไกล เมื่อฉันสร้างมันมันลงท้ายด้วย localusername @ localsystem ควรเปลี่ยนเป็น remoteusername @ remotesystem ใช่ไหม ทั้งในและนอกสถานที่?
user394

5
ไม่เพียงแค่ต่อท้ายเนื้อหาในพื้นที่ของคุณid_rsa.pubไปยังauthorized_keysระบบรีโมต มันจะทำงาน
Warren Young

1
อีกวิธีหนึ่งหลายระบบมี ssh-copy-id เพื่อแก้ปัญหานี้: "ssh-copy-id -i ~ / .ssh / id_rsa.pub ชื่อผู้ใช้ @ remote-machine"
แมตต์ซิมมอนส์

น่าเสียดายที่หลายคนทำไม่ได้และดูเหมือนว่านี่ไม่ใช่ส่วนมาตรฐานของ OpenSSH ดังนั้นจึงมีการใช้งานที่แตกต่างกันอย่างน้อยสองอย่างของสคริปต์นี้ที่ลอยไปมา
Warren Young

หากคุณกำลังใช้ gnome seahorse มีการใช้งานคีย์อัตโนมัติ
Maciej Piechotka

9

มีสองวิธีในการทำสิ่งนี้:

1) ใส่ user @ ลงใน svn url; สิ่งนี้บอก svn + ssh เพื่อเข้าสู่ระบบในฐานะผู้ใช้ ฉันคิดว่ามันเป็นความคิดที่ไม่ดีจากมุมมองการบำรุงรักษาเพราะสิ่งต่าง ๆ เช่น externals ที่ชี้ไปที่ส่วนอื่น ๆ ของพื้นที่เก็บข้อมูลจะไม่ทำงานอย่างถูกต้อง

2) สร้าง ~ / .ssh / config (จัดทำเป็นเอกสารเป็นssh_config ) ที่ระบุสิ่งที่ต้องการ:

Host othersystem
  User otheruser

วิธีนี้ความพยายามใด ๆที่จะ ssh ไปยังระบบอื่น ๆ จะเริ่มต้นที่จะใช้ otheruser ซึ่งมีประโยชน์สำหรับคุณเมื่อทำ ssh ด้วยตนเองเช่นเดียวกับเมื่อคุณใช้ svn


5

คุณไม่จำเป็นต้องมีชื่อผู้ใช้เดียวกันใน mashines ทั้งสอง ตราบใดที่คุณสร้างคีย์ ( ssh-keygen) คุณจะต้องคัดลอกบรรทัดจาก~/.ssh/id_rsa.pubหรือ~/.ssh/id_dsa.pub(ขึ้นอยู่กับประเภทของคีย์) จากเซิร์ฟเวอร์ในพื้นที่และผนวกเข้า~/.ssh/authorized_keysกับรีโมต

% ssh-keygen
% cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

หากคุณไม่ต้องการพิมพ์remoteuserแต่ละครั้งที่ผนวกเข้ากับ~/.ssh/config:

Host remoteserver
    User remoteuser

PS ชื่อของคีย์อาจจะอยู่ในรูปแบบของlocaluser@localhostแต่มันก็เป็นเพียงชื่อ อาจเป็นได้เช่นกันmyfavouritekey@myfavouritecomputerและไม่มีใครสนใจ


คำสั่ง "cat" ด้านบนเป็นแกนหลักของssh-copy-idสคริปต์ทั่วไป แต่ไม่เป็นมาตรฐานที่กล่าวถึงข้างต้น ฉันจำได้เพราะไม่ใช่ทุกระบบที่ฉันใช้มาด้วยssh-copy-idดังนั้นฉันจึงพิมพ์สิ่งที่มากกว่าสองสามครั้ง :)
Warren Young

ssh-copy-idฉันไม่เคยได้ยินเกี่ยวกับ ฉันมักจะใช้vimหรือseahorse;)
Maciej Piechotka

0

หลังจากฉันสร้าง. ssh / config และเรียกใช้:

cat ~/.ssh/id_*.pub | ssh remoteuser@remoteserver 'cat > .ssh/authorized_keys'

ฉันได้รับข้อผิดพลาด:

Bad owner or permissions on /usr/share/eprints3/.ssh/config

จากนั้นฉันก็เพิ่มchmod 600 .ssh/configและหลังจากนั้นมันก็ทำงานได้อย่างราบรื่น

enter code here

1
จะดีกว่าถ้าคุณต่อท้ายไฟล์ที่ได้รับอนุญาตแล้วมิฉะนั้นจะลบคีย์สาธารณะของคนอื่นด้วย ดีกว่าถ้าคุณแก้ไขคำตอบด้วย 'cat >> .ssh / authorized_keys'
Nitin Mahesh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.