การกำหนดค่า SSH: แทนที่ชื่อผู้ใช้เริ่มต้น


271

เป็นไปได้ไหมที่จะกำหนดsshให้รู้ว่าชื่อผู้ใช้ของฉันคืออะไร?

โดยค่าเริ่มต้นจะใช้ชื่อผู้ใช้ปัจจุบันซึ่งไม่ถูกต้องในกรณีของฉัน

ฉันบนแล็ปท็อปที่ยืมและชื่อผู้ใช้ของฉันคือloanerแต่ผมอยากจะบอกว่าชื่อผู้ใช้ของฉันคือsshbuck

คะแนนโบนัส: ชื่อผู้ใช้ของฉันที่บ้านคือ bgolemon ถ้าฉันสามารถกำหนดชื่อผู้ใช้ต่อโฮสต์ที่จะดียิ่งขึ้น


3
Stack Overflow เป็นเว็บไซต์สำหรับคำถามการเขียนโปรแกรมและการพัฒนา คำถามนี้ดูเหมือนจะไม่ได้อยู่ที่หัวข้อเพราะมันไม่เกี่ยวกับการเขียนโปรแกรมหรือการพัฒนา ดูหัวข้อใดบ้างที่ฉันสามารถถามเกี่ยวกับที่นี่ในศูนย์ช่วยเหลือ บางทีผู้ใช้ระดับสูงหรือUnix & Linux Stack Exchangeอาจเป็นที่ที่ดีกว่าสำหรับการถาม ดูที่ฉันจะโพสต์คำถามเกี่ยวกับ Dev Ops ได้ที่ไหน
jww

3
นี่เป็นคำถามที่ดีมาก!
Nicolas S.Xu

คำตอบที่ยอมรับได้ที่นี่คือคุณภาพที่ดีกว่า superuser: รวมถึงการใช้คำสั่งของผู้ใช้ทั่วโลกและความคิดเห็นที่เพิ่มทำให้ลำดับความสำคัญชัดเจน
Rondo

คำตอบ:


449

สร้างไฟล์ที่เรียกว่าภายในconfig ~/.sshภายในไฟล์ที่คุณสามารถเพิ่ม:

Host *
    User buck

หรือเพิ่ม

Host example
    HostName example.net
    User buck

ตัวอย่างที่สองจะตั้งชื่อผู้ใช้และเฉพาะชื่อโฮสต์ในขณะที่ตัวอย่างแรกตั้งชื่อผู้ใช้เท่านั้น และเมื่อคุณใช้อย่างใดอย่างหนึ่งที่สองที่คุณไม่จำเป็นต้องใช้ssh example.net; ssh exampleจะเพียงพอ


134
มันอาจจะคุ้มค่าที่ชี้ให้เห็นว่าตามman ssh_config: Since the first obtained value for each parameter is used, more host-specific declarations should be given near the beginning of the file, and general defaults at the end.ดังนั้นHost *ส่วนที่ควรจะไปในตอนท้าย
quodlibetor

9
เป็นที่น่าสังเกตว่าไฟล์กำหนดค่าจะถูกประมวลผลในลักษณะจากบนลงล่างเติมแต่ละฟิลด์ (ผู้ใช้, ชื่อโฮสต์ ... ) และข้ามเขตข้อมูลซ้ำ ๆ กันหากมีคำสั่งโฮสต์หลายคำสั่งตรงกัน หากคุณกำหนดHost *, User jdoeที่ด้านบนและจากนั้นกำหนดHost example, HostName abc.example.com, User rootความพยายามที่จะเป็นเช่นเดียวกับถ้าคุณป้อนssh example ssh jdoe@abc.example.comเพื่อกำหนดค่าเริ่มต้น ssh (เช่น. User root) Host *คำสั่งจะต้องอยู่ที่ด้านล่างของไฟล์กำหนดค่า
mr.b

17
นอกจากนี้อย่าลืม chmod 600 บน. ssh / config
สเวน

โปรดทราบว่าหากมีชื่อโฮสต์หลายชื่อที่เซิร์ฟเวอร์สามารถเข้าถึงได้ (หรือหากคุณต้องการชื่อผู้ใช้เริ่มต้นเดียวกันสำหรับหลายเซิร์ฟเวอร์) คุณควรเปลี่ยนบรรทัดแรกเป็นHost server1.local example.net *.example.orgและเพียงแค่กำจัดHostNameบรรทัด
Lèsemajesté

44

ถ้าคุณเพียงต้องการที่จะsshไม่กี่ครั้งเช่นบนคอมพิวเตอร์ที่ใช้ร่วมกันหรือยืมมาลอง:

ssh buck@hostname

หรือ

ssh -l buck hostname

1
ขอบคุณ แต่ฉันคุ้นเคยกับสิ่งนี้แล้ว ดูเหมือนว่าซ้ำซ้อนเพื่อระบุเจ้าชู้ @ host เมื่อมันมักเจ้าชู้ @ host ฉันพยายามหาวิธีในการแสดงข้อมูลนี้ในไฟล์กำหนดค่า
bukzor

1
คุณเคยคิดว่าอะไรง่ายๆเป็น alias sshhostname = 'ssh buck @ hostname' หรือไม่?
gpojd

ใช่ฉันมี. คำตอบของ Learath2 คือสิ่งที่ฉันกำลังมองหา ฉันสามารถตรวจสอบสิ่งนี้ในที่เก็บ dotfiles ของฉันและไม่ต้องกังวลกับมันอีกเลย
bukzor

ฉันใช้นามแฝงรูทเพราะฉันเชื่อมต่อกับเครื่องสำหรับลูกค้าที่แตกต่างกันที่ชื่อผู้ใช้ของฉันแตกต่างกันในแต่ละสภาพแวดล้อมของลูกค้า อีกวิธีที่ฉันคิดว่าน่าจะมีสภาพแวดล้อมเชลล์ท้องถิ่นที่แตกต่างกันเพื่อตั้งค่า ssh และการตั้งค่าที่เกี่ยวข้องสำหรับลูกค้าแต่ละราย หรือ VM ต่อลูกค้า
Nick Spacek

6

man ssh_config กล่าวว่า

ผู้ใช้งาน

ระบุผู้ใช้ที่จะเข้าสู่ระบบในฐานะ สิ่งนี้มีประโยชน์เมื่อใช้ชื่อผู้ใช้ที่แตกต่างกันในเครื่องที่แตกต่างกัน สิ่งนี้จะช่วยประหยัดปัญหาในการจำที่จะต้องให้ชื่อผู้ใช้ในบรรทัดคำสั่ง


1
"ตัวตน" ในกรณีนี้เทียบเท่ากับการใช้ "รหัสผ่าน" ตามปกติ นี่คือข้อมูลที่รับรองความถูกต้องของคุณ แต่ไม่ได้ช่วยระบุว่าคุณกำลังพยายามพิสูจน์ตัวตนเป็นใคร
bukzor

อุ่ย มีการตั้งค่าของผู้ใช้ในที่นั่นเช่นกัน
nes1983

0

คุณสามารถใช้ทางลัด สร้างไฟล์. bashrc ในโฮมไดเร็กตอรี่ของคุณ ในนั้นคุณสามารถเพิ่มต่อไปนี้:

alias sshb="ssh buck@host"

ในการทำให้นามแฝงพร้อมใช้งานในเทอร์มินัลของคุณคุณสามารถปิดและเปิดเทอร์มินัลของคุณหรือเรียกใช้

source ~/.bashrc

จากนั้นคุณสามารถเชื่อมต่อโดยพิมพ์เพียง:

sshb

1
นี่เป็นสิ่งที่ยอดเยี่ยมสำหรับโฮสต์ที่เฉพาะเจาะจง แต่เมื่อฉันเชื่อมต่อกับเซิร์ฟเวอร์ที่แตกต่างกันหลายล้านล้านเครื่องมันก็ค่อนข้างไร้ประโยชน์ ค่อนข้างตั้งค่า.ssh/configด้วยการตั้งค่าที่เหมาะสม ฉันมาหาการ*ดูแลป่า (และเรียนรู้ว่ามันควรจะอยู่ที่ด้านล่าง)
mazunki

0

มีพลอยทับทิมที่เชื่อมต่อของคุณเป็นแฟ้มการกำหนดค่าที่เรียกว่าsshsshez

ทั้งหมดที่คุณต้องทำคือการและจากนั้นคุณสามารถเชื่อมต่อการใช้sshez <alias> username@example.com -p <port-number> ssh <alias>นอกจากนี้ยังมีประโยชน์เนื่องจากคุณสามารถแสดงรายการชื่อแทนของคุณโดยใช้sshez listและสามารถลบออกได้โดยsshez remove aliasง่าย

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