SSH ที่ไม่มีรหัสผ่านพร้อมที่ตั้งไฟล์ข้อมูลระบุตัวตนที่ไม่ใช่ค่าเริ่มต้น


16

ในฐานะที่เป็นส่วนหนึ่งของสคริปต์เริ่มต้นฉันต้องเปิดหน้าต่างเทอร์มินัล gnome หลายหน้าต่างโดยอัตโนมัติหนึ่งในเทอร์มินัลเหล่านั้นจะส่งโดยอัตโนมัติ:

ssh user@192.168.1.3

ข้อ จำกัด ของสิ่งนี้คือฉันยังต้องพิมพ์รหัสผ่านเพื่อทำการเชื่อมต่อ SSH ให้เสร็จสมบูรณ์

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

จากระบบที่ฉันต้องการเชื่อมต่อฉันวิ่ง:

ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key

จากนั้นให้ฉันป้อนข้อความรหัสผ่าน ฉันปล่อยให้สิ่งนี้ว่างเปล่าเนื่องจากฉันไม่แน่ใจว่าจะเป็นเช่นไรดังนั้นฉันจึงคิดว่าการตั้งค่าอย่างใดอย่างหนึ่งจะต้องปลดล็อกด้วยข้อความรหัสผ่านที่กล่าวไว้ทุกครั้งที่ฉันใช้งาน

หลังจากดำเนินการตามคำแนะนำที่ลิงก์ข้างต้นแล้วฉันก็วิ่งและได้รับสิ่งต่อไปนี้:

ssh-copy-id user@IP
ERROR: No identities found

การค้นหาอย่างรวดเร็วพบว่าฉันต้องระบุตำแหน่งของคีย์เนื่องจากไม่ได้อยู่ในตำแหน่งบันทึกเริ่มต้นดังนั้นฉันจึงแก้ไข:

ssh-copy-id -i /home/user/ssh/keys/server1key.pub user@192.168.1.3

หลังจากขอรหัสผ่านของเซิร์ฟเวอร์แล้วจะทำการเพิ่มรหัสได้สำเร็จ อย่างไรก็ตามเมื่อพยายามเข้าสู่ระบบด้วย "ssh user @ IP" ฉันยังคงได้รับแจ้งให้ใส่รหัสผ่าน

เท่าที่ฉันทราบฉันได้ปฏิบัติตามคำแนะนำที่เชื่อมโยงอย่างถูกต้องดังนั้นฉันอาจพลาดบางสิ่งหรืออาจมีการกำหนดค่าที่มีอยู่ทำให้ฉันไม่สามารถใช้งานได้

ทั้งสองระบบใช้ 18.04 และ openssh


ดังนั้นฉันต้องระบุตำแหน่งของไฟล์. pub เมื่อส่งคำสั่ง SSH
hiigaran

ฉันมีวิธีที่แตกต่างกันเล็กน้อยในการจัดระเบียบไฟล์ของฉันดังนั้นตำแหน่งที่ไม่ใช่ค่าเริ่มต้น แต่พวกคุณได้ช่วยอย่างมาก ขอบคุณ อย่าลังเลที่จะตอบคำถามที่ฉันยอมรับได้
hiigaran

คำตอบ:


35

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

คุณสามารถแก้ไขได้ด้วยวิธีเดียวกันโดยเพิ่มคำสั่ง-i /home/user/ssh/keys/server1keyของคุณssh- โปรดทราบว่าฝั่งไคลเอ็นต์ต้องการตำแหน่งของไฟล์ไพรเวตคีย์

จาก man ssh

 -i identity_file
         Selects a file from which the identity (private key) for public
         key authentication is read.  The default is ~/.ssh/identity for
         protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa,
         ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for protocol version 2.

หรือคุณอาจต้องการสร้าง~/.ssh/configรายการไฟล์สำหรับโฮสต์ตามบรรทัดของ

Host            somename
Hostname        192.168.1.3
User            user
IdentityFile    /home/user/ssh/keys/server1key

1
ฉันมักจะสันนิษฐานว่าไฟล์กำหนดค่าการเยื้องที่จำเป็น - ฉันเห็นว่าไม่ใช่กรณี Intruiging
Boris the Spider

ใครก็ตามที่ใช้ OpenSSH ควรจะมี~/.ssh/configมิฉะนั้น OpenSSH /etc/ssh/ssh_configใช้ระบบเริ่มต้นกว้าง ในกรณีที่ทุกคนพบว่ามีประโยชน์ฉันอัปโหลดssh_config ที่สร้างไว้ล่วงหน้าไปยัง GitHub ของฉันในขณะที่กลับเป็นจุดเริ่มต้นสำหรับผู้ใช้ที่อาจไม่มีเวลาอ่านหน้าssh_config man
JW0914

@ JW0914 ที่เป็นจริงเพียงครึ่งเดียว: ค่าแต่ละค่าใน~/.ssh/configจะแทนที่ค่าส่วนกลางssh_configแต่การมีไฟล์จะไม่ปิดใช้งานการกำหนดค่าทั่วทั้งระบบ
เซบาสเตียนสตาร์

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

2

อีกเหตุผลที่ssh-copy-idล้มเหลวคือไม่ได้เพิ่มคีย์ไปยังเอเจนต์ SSH

ก่อนอื่นให้ตรวจสอบและเริ่มถ้า ssh-agentใช้งานอยู่:

eval "$(ssh-agent -s)"

หากคุณได้รับ ID กระบวนการคุณสามารถเพิ่มรหัสของคุณ:

ssh-add -k /home/user/ssh/keys/server1key

กับ -kคุณเพิ่มกุญแจไปยังพวงกุญแจ

ตรวจสอบว่ามีการเพิ่มกุญแจด้วย:

ssh-add -l

ssh-copy-id ควรจะทำงานตอนนี้


-1

หวังว่านี่จะทำงานให้คุณ .. "sshpass -p yourpassword" มันจะเข้าสู่ระบบรีโมตโฮสต์โดยอัตโนมัติ

[root @ localhost .ssh] # sshpass -p password123 ssh -l root localhost


-1

เพียงรันคำสั่ง 2:

ssh-keygen
ssh-copy-id

คำตอบยาว:

user@ip:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): temp_file
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in stemp.
Your public key has been saved in stemp.pub.
The key fingerprint is:
SHA256:5**M user@ip
The key's randomart image is:
+---[RSA 2048]----+
|  ...            |
| ...             |
| ..              |
| ..+.    o .     |
|                 |
|    B            |
|                 |
|=      *         |
|=+   o .         |
+----[SHA256]-----+

แล้ว:

user@ip:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub ipDestination -p portDest
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.