ย้ายโฟลเดอร์. ssh จาก / var / root /


2

ผมพยายามที่จะตั้งค่าคีย์ SSH ssh-keygen -t dsa -b 1024ได้อย่างง่ายดายสำหรับการเข้าสู่เซิร์ฟเวอร์ซึ่งเป็นโฮสติ้งเว็บไซต์ของฉัน: คีย์ (สาธารณะและส่วนตัว) ได้รับการบันทึก/var/root/.sshซึ่งฉันไม่ชอบเพราะฉันต้องsudo -sก่อน rsync สำหรับการเข้าถึงคีย์ส่วนตัว

มีวิธีที่ง่ายและปลอดภัยในการย้ายโฟลเดอร์ ssh /var/root/.sshไปยังโฟลเดอร์ผู้ใช้ของฉันหรือไม่เพื่อให้ฉันสามารถใช้ปุ่มได้แม้ว่าจะไม่รูทหรือไม่ ตำแหน่งใดที่จะย้าย? คำสั่งสำหรับมือใหม่ที่จะใช้สำหรับการย้ายคืออะไร (สำหรับ mac os 10.10) ขอบคุณ

คำตอบ:


2

หากคุณเพิ่งสร้างคีย์ DSA ในฐานะรูทการทำสิ่งต่อไปนี้จะปลอดภัยที่สุด (จากเทอร์มินัลในฐานะผู้ใช้ของคุณเอง):

mkdir -p ~/.ssh
sudo cp -av /var/root/.ssh/id_dsa /var/root/.ssh/id_dsa.pub /Users/$USER/.ssh/
chown -v $USER: ~/.ssh/id_dsa*
chmod -v 600 ~/.ssh/id_dsa

สิ่งนี้จะสร้าง.sshไดเรกทอรีการกำหนดค่าใน homedir ของคุณ ( mkdir -pจะไม่ส่งเสียงดังถ้า~.sshมีอยู่แล้วและจะไม่ทำอะไรเลย) คัดลอกไฟล์กุญแจสาธารณะและกุญแจส่วนตัวจากroothomedir ของคุณเองแล้วตั้งค่าสิทธิ์และความเป็นเจ้าของที่ถูกต้อง ในไฟล์ของคุณ

นี่คือไม่ทำลาย (คุณไม่ได้ย้ายอะไรคุณเพียงแค่คัดลอก); เมื่อคุณมีความสุขคู่กุญแจจะช่วยให้คุณเชื่อมต่อกับโฮสต์ระยะไกลของคุณได้สำเร็จในฐานะผู้ใช้เข้าสู่ระบบปกติของคุณคุณสามารถทำได้sudo rm -fv /var/root/.ssh/id_dsa /var/root/.ssh/id_dsa.pubสิ่งนี้จะไม่ส่งผลกระทบต่อไฟล์อื่น ๆ ใน.sshโฟลเดอร์ของบัญชี


2

เปิด Terminal ขณะที่ลงชื่อเข้าใช้ในฐานะผู้ใช้ปกติของคุณจากนั้นเรียกใช้

mkdir ~/.ssh
sudo sh -c 'mv /var/root/.ssh/* /Users/'$USER'/.ssh/'
sudo chown $USER ~/.ssh/*
sudo chgrp $(groups | cut -d \  -f 1) ~/.ssh/*
chmod 700 ~/.ssh
chmod 600 ~/.ssh/*

สิ่งนี้จะถือว่าคุณไม่ได้สร้างคู่คีย์ ssh ใด ๆ ตามที่คุณใช้ตามปกติ (และยังไม่มีไฟล์~/.ssh)

PS: คำอธิบายบางอย่าง:

  • ขั้นแรกsudoย้ายเนื้อหาของโฟลเดอร์. ssh ของรูทไปเป็นหนึ่งในผู้ใช้ปัจจุบัน จำเป็นต้องทำโดยเรียก subshell ( sh -c) เนื่องจากส่วน wildcard ( /var/root/.ssh/*) ทำงานเฉพาะหลังจากที่sudoผู้ใช้ปัจจุบันเปลี่ยนเป็นรูท $USERเป็นตัวแปรสภาพแวดล้อมที่มีชื่อของผู้ใช้ปัจจุบัน
  • สามsudoเปลี่ยนความเป็นเจ้าของกลุ่มของไฟล์ที่คัดลอกเป็นกลุ่มหลักของผู้ใช้ปัจจุบัน เนื่องจากไม่มีตัวแปรสภาวะแวดล้อมที่สะดวกสำหรับสิ่งนี้เอาต์พุตของgroups(ซึ่งแสดงรายการกลุ่มทั้งหมดที่ผู้ใช้เป็นเจ้าของ) จำเป็นต้องใช้ \โปรดทราบอักขระช่องว่างสองหลังจากที่

ฉันเข้าใจแผนแพทริกซ์ แต่ฉันไม่สามารถรับหมายเลขบรรทัด 2 ได้: เมื่อเข้าสู่ระบบเพราะxxx:~gilles$ถามรหัสผ่านของฉันและล้มเหลว: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว หมายเหตุถ้าฉันเขียนsudo -sพรอมต์คือ: bash-3.2 #และจากนั้นฉันสามารถแสดงรายการ (ls)/var/root/.ssh
Gilles

อ๊ะคนเสพเวจมรรค แก้ไขแล้วโปรดลองอีกครั้ง
nohillside

ดูเหมือนว่าจะโพสต์ที่ประสบความสำเร็จ ในความพยายามครั้งแรกของฉันในการคัดลอกคำสั่งของคุณฉันล้มเหลวเพราะฉันไม่ได้ดูแลไวยากรณ์ ( cut -d \ -f 1) ที่มีช่องว่าง 2 ที่ต้องการ ฉันจะทดสอบในวันพรุ่งนี้และพยายามที่จะเข้าใจพื้นฐาน;)
Gilles

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