scp'ing โดยใช้ไฟล์คีย์เป็นพารามิเตอร์ฉันจะทำอย่างนั้นได้ถ้าเป็นไปได้?


51
scp -i ~/.ssh/id_rsa.pub events*$date*_QA.log $remote_user@$remote_server:$remote_location

สคริปต์ดังกล่าวไม่ถูกต้องหรือไม่ ฉันทำไม่ถูกต้องหรือไม่

ฉันไปที่.sshไดเรกทอรีและเห็นว่าเซิร์ฟเวอร์ระยะไกลอยู่ในknown_hostsไฟล์

แต่เมื่อฉันทำการสแกนสามัญโดยไม่มีไฟล์ใด ๆ เป็นพารามิเตอร์ก็ยังคงขอรหัสผ่าน

scp events*$date*_QA.log $remote_user@$remote_server:$remote_location

ฉันจะรวมไฟล์คีย์ในคำสั่งของฉันได้อย่างไร

sh-3.2$ grep server ~/.ssh/*
/home/user/.ssh/known_hosts:server....com,ip_addr ssh-rsa Asine=jhjsdhfjsadhfjkashdfjhasdjfhksadjfhasjdfhj

คำตอบ:


67
 -i identity_file
         Selects the file from which the identity (private key) for public
         key authentication is read.  This option is directly passed to
         ssh(1).

~/.ssh/id_rsaใช้


ยังคงถามรหัสผ่านsh-3.2$ scp -i ~/.ssh/id_rsa test_QA.log user@server:location user@server's password:

@tech_learner แปลกเพราะมันใช้ได้กับฉัน
whitequark

2
คุณอาจต้องใช้เส้นทางจริงเช่นเดียวกับใน / home / user / แทนที่จะเป็น ~ ดูเหมือนว่าจะทำให้มันใช้ได้สำหรับฉัน
Evan Darwin

1
คุณต้องการให้เนื้อหา ~ / .ssh / id_rsa.pub ของผู้ใช้ภายในวางไว้ในไฟล์ authorized_keys ของเซิร์ฟเวอร์ระยะไกล โดยปกติจะอยู่ใน ~ / .ssh / authorized_keys คุณต้องมีความเฉพาะเจาะจงเกี่ยวกับการอนุญาตใช้ไฟล์ในไฟล์ใน ~ / .ssh ทำให้สามารถเข้าถึงไฟล์เหล่านี้ได้น้อยที่สุด sshd มีความเฉพาะเจาะจงเกี่ยวกับการอนุญาตของไฟล์
JR Lawhorne

สำหรับ Mac OS X จะใช้งาน-i ~/.ssh/id_rsaได้ก็ต่อเมื่อเป็นตัวเลือกแรก ดังนั้นสิ่งนี้ได้ผล: scp -i ~/.ssh/mykey.pem -r dir user@remote_server:~/. สิ่งนี้ใช้ไม่ได้:scp -r -i ~/.ssh/mykey.pem dir user@remote_server:~/
asmaier

1

นี่อาจช่วย noob อื่น

[ฉันรู้ว่านี่เป็นตัวอย่างวงกลมซ้ำซ้อน แต่เป็นตัวอย่างที่ดีที่จะอธิบาย] สถานการณ์:

  1. ssh จาก Mac -> Ubuntu
  2. ไฟล์ scp จาก Mac -> Ubuntu
  3. ปิดไฟล์ ssh และ scp จาก Ubuntu -> Mac

ฉันเพิ่งสร้างคีย์ ssh บน Mac ของฉัน (ผ่าน ssh-keygen) และแบ่งปันกับเครื่องที่ใช้ Ubuntu ผ่าน (ssh-copy-id) ดังนั้นฉันจึงสามารถคัดลอกไฟล์ขณะที่ล็อกอินเข้าสู่ Mac ของฉันจากเครื่องที่ใช้งาน Ubuntu แต่ไม่ใช่วิธีอื่น ๆ

วิธีแก้ปัญหา: ฉันต้องสร้างคีย์ ssh บนเครื่อง Ubuntu และแบ่งปันกับ Mac ของฉัน จากนั้นฉันสามารถรันคำสั่งต่อไปนี้บนเครื่อง Ubuntu ได้สำเร็จ

Mac IP: 192.168.1.40
Ubuntu IP: 192.168.1.38

บน Mac

ssh-keygen
ssh-copy-id ubuntu@192.168.1.38

ssh ubuntu@192.168.1.38

# Now on Ubuntu
ssh-keygen
ssh-copy-id MAC@192.168.1.40

และตอนนี้คำสั่งต่อไปนี้ควรคัดลอกไฟล์โดยไม่ต้องขอรหัสผ่านไปยังMAC

sudo scp -i /home/ubuntu/.ssh/id_rsa MAC@192.168.1.40:~/Documents/Fluff/Version-Control/tools/pull.sh .

0

ทดสอบและแก้ไขโดยคำแนะนำเหล่านี้: https://askubuntu.com/questions/46930/how-can-i-set-up-password-less-ssh-login

คำแนะนำที่นี่ใช้ได้อย่างไม่มีที่ติเมื่อฉันทดสอบบนกล่อง (CentOS / CentOS) ฉันคิดว่าปัญหาคือกุญแจ SSH ของคุณไม่ได้เชื่อมโยงกับชื่อผู้ใช้

ตัวอย่าง: แมว authorized_keys # บนกล่องฉัน sshing / scpin' เพื่อ SSH-RSA BLAHBLAHBLAHBLAH / zAcS4kD9pyPAjD3 / gd5D1rcQa6IztCMR9yMXiGFnxviWsT8 / oYevZw25k4yREuA8ibLKC9peH1X4LK1E + n7gq4TETexWkZbQ2XGLOX44eglra3MB4FShPg0cZXGcJWltPQ / y0Ay2A / KmaC14YrDfqwm7 + ibTiUp4hOO8I6eIPmwwGn / 2hs0SewJXisGqUx2v #username my_user@machine.local จะเชื่อมโยงกับที่สำคัญและเป็น โฮสต์ที่ได้รับอนุญาต

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