bash: /home/user/.ssh/authorized_keys: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว


30

สร้างคีย์ ssh:
คำสั่ง:

ssh-keygen -t rsa –P ""

การย้ายคีย์ไปยังคีย์ที่ได้รับอนุญาต:
คำสั่ง:

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
bash: /home/user/.ssh/authorized_keys: No such file or directory

1
~/.ssh/authorized_keysเป็นกุญแจของเครื่องคอมพิวเตอร์อื่น ๆ ที่คุณเชื่อมต่อกับ / ความไว้วางใจไม่ได้ของคุณเองที่สำคัญ
saiarcot895

แอปพลิเคชั่นบางตัวต้องใช้รหัสผ่าน ssh กับเครื่องของตัวเอง
Nehal J Wani

โปรดอย่าโพสต์คำถามเดียวกันในหลาย ๆ ไซต์ของเครือข่าย Stack Exchange
terdon

ทำไมคุณต้องเชื่อใจกุญแจที่คุณเป็นเจ้าของ? คุณพยายามทำอะไรอยู่
Braiam

คำตอบ:


74

คุณต้องสร้าง.sshไดเรกทอรีและauthorized_keysไฟล์ในครั้งแรก

  1. สร้าง.sshไดเรกทอรี:

    mkdir ~/.ssh
    
  2. ตั้งค่าการอนุญาตที่ถูกต้อง:

    chmod 700 ~/.ssh
    
  3. สร้างauthorized_keysไฟล์:

    touch ~/.ssh/authorized_keys
    
  4. ตั้งค่าการอนุญาตที่ถูกต้อง:

    chmod 600 ~/.ssh/authorized_keys
    

การอนุญาตมีความสำคัญ! มันจะไม่ทำงานหากไม่มีสิทธิ์ที่ถูกต้อง!

ตอนนี้คุณสามารถเพิ่มกุญแจสาธารณะในauthorized_keysไฟล์:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

คุณต้องเพิ่มกุญแจสาธารณะของคอมพิวเตอร์ของคุณไปยังauthorized_keysไฟล์ของคอมพิวเตอร์ที่คุณต้องการเข้าถึงโดยใช้ SSH Keys !


ดังที่ terdon กล่าวไว้คุณสามารถใช้คำสั่งนี้:

ssh-copy-id user@host

สิ่งนี้จะใส่id_rsa.pub(ใน~/.sshไดเรกทอรีของคุณ) ลงในauthorized_keysไฟล์ของคอมพิวเตอร์ระยะไกลสร้าง.sshไดเรกทอรีและauthorized_keysไฟล์ด้วยสิทธิ์ที่ถูกต้องหากจำเป็น


5
ในกรณีใด ๆ ที่คุณไม่ต้องการที่จะเพียงแค่catมันว่าเป็นสิ่งที่ssh-copy-idเป็น
terdon

1
ว้าวเท่ฉันได้เพิ่มแล้ว
Louis Matthijssen

@LouisMatthijssen ฉันได้คัดลอกกุญแจไปยังเซิร์ฟเวอร์ระยะไกลของฉันแล้ว ฉันจะยืนยันได้อย่างไรว่ากุญแจสาธารณะถูกเพิ่มใน authorized_keys
Aman

2

ในกรณีที่คุณได้รับกุญแจสาธารณะในอีเมลเพื่อติดตั้งไปยังเซิร์ฟเวอร์ระยะไกล:

1) SSH เข้าสู่เซิร์ฟเวอร์ ฉันใช้ PuTTY บน Windows

2) ตั้งค่าคีย์:

mkdir ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys

ใช้ความระมัดระวังในการคัดลอกคีย์และวางลงในบรรทัดใหม่ในหน้าต่างแก้ไข ตรวจสอบว่าตรงแถวเดียวและบันทึก

chmod 600 ~/.ssh/authorized_keys

2

เนื่องจากฉันมีชื่อเสียงไม่พอฉันจึงเพิ่มที่นี่ นอกจากคำตอบของ Louis Matthijssen หากคุณยังไม่สามารถเข้าสู่ระบบผ่าน ssh ในฐานะผู้ใช้ที่คุณสร้างเช่น

ssh username@host

นี่อาจเป็นเพราะการไม่มีสิทธิ์ของเจ้าของที่คุณต้องเพิ่มลงในโฟลเดอร์ /home/username/.ssh ของคุณ ฉันมีปัญหาเดียวกันและคุณสามารถให้สิทธิ์นี้เป็น:

chown -R username:username /home/username/.ssh

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

หวังว่านี่จะช่วยใครซักคน


0

ลอง

 touch $HOME/.ssh/authorized_keys

เพื่อสร้างไฟล์เปล่าที่มีสิทธิ์ของผู้ใช้นั้น

ไฟล์นี้ถูกสร้างขึ้นเมื่อคุณเข้าถึงโฮสต์รีโมตแรกกับผู้ใช้


0

สิ่งนี้อาจล้มเหลวหากสร้างคีย์ด้วยssh-keygenคุณให้ชื่อไฟล์ ฉันป้อนชื่อmy-ssh-file-nameแล้วมันเขียนรหัสไปที่/Users/MyUserNameแทนที่จะเป็น.sshโฟลเดอร์ หากคุณเว้นว่างชื่อไฟล์ไว้มันจะเขียนไป.sshตามที่คาดไว้

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