scp'ing, використовуючи ключовий файл як параметр, як це зробити, якщо можливо?


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

Чи вказаний вище сценарій невірний? Хіба я не роблю це правильно?

Я зайшов у .sshкаталог і побачив, що віддалений сервер є у known_hostsфайлі.

Але, коли я роблю звичайний scp без будь-якого файлу в якості параметра, він все одно просить пароль

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 / замість ~. Це, здавалося, змусило мене працювати.
Еван Дарвін

1
Ви хочете, щоб вміст локального користувача ~ / .ssh / id_rsa.pub розміщувався у файлі дозволеного_кейсу віддаленого сервера. Зазвичай це у ~ / .ssh / санкціонованих_кеях. Ви також повинні бути дуже уважні до прав доступу до файлів у ~ / .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

Це може допомогти іншому нобі.

[Я знаю, що це зайвий круговий приклад, але це добре для ілюстрації] Сценарій:

  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 my_user@machine.local #username прив'язаний до ключу і є уповноважений хост

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.