scp, используя ключевой файл в качестве параметра, как я могу сделать это, если это возможно?


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 было помещено в файл author_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

Это может помочь другому нубу.

[Я знаю, что это избыточный круговой пример, но его хорошо проиллюстрировать] Сценарий:

  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 Machine и поделиться ими с моим 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.