scp'ing przy użyciu pliku klucza jako parametru, jak mogę to zrobić, jeśli to możliwe?

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

Czy powyższy skrypt jest niepoprawny? Czy nie robię tego poprawnie?

Poszedłem do .sshkatalogu i zobaczyłem, że zdalny serwer jest w known_hostspliku.

Ale kiedy robię zwykły scp bez pliku jako parametru, wciąż prosi o hasło

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

Jak mogę dołączyć plik klucza do polecenia?

sh-3.2$ grep server ~/.ssh/*
/home/user/.ssh/known_hosts:server....com,ip_addr ssh-rsa Asine=jhjsdhfjsadhfjkashdfjhasdjfhksadjfhasjdfhj
Machavity
źródło

Odpowiedzi:

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).

Zastosowanie ~/.ssh/id_rsa.

Whitequark
źródło
wciąż pyta o hasłosh-3.2$ scp -i ~/.ssh/id_rsa test_QA.log user@server:location user@server's password:
@tech_learner dziwne, ponieważ to działa dla mnie
whitequark
2
Może być konieczne użycie rzeczywistej ścieżki, jak w / home / user / zamiast ~. Wydawało się, że to zadziałało dla mnie.
Evan Darwin
1
Chcesz, aby zawartość ~ / .ssh / id_rsa.pub użytkownika lokalnego była umieszczana w pliku kluczy autoryzowanych na serwerze zdalnym. Zwykle jest w ~ / .ssh / uprawnionych_kluczach. Trzeba także bardzo uważać na uprawnienia do plików w ~ / .ssh, aby były one minimalnie dostępne. sshd bardzo szczegółowo określa uprawnienia do plików.
JR Lawhorne,
W systemie Mac OS X działało to tylko wtedy, gdy -i ~/.ssh/id_rsabyła to pierwsza opcja. Tak to działa: scp -i ~/.ssh/mykey.pem -r dir user@remote_server:~/. To nie zadziałało:scp -r -i ~/.ssh/mykey.pem dir user@remote_server:~/
asmaier,
1

To może pomóc kolejnemu noobowi.

[Wiem, że to zbędny okrągły przykład, ale dobrze to zilustrować] Scenariusz:

  1. ssh z komputera Mac -> Ubuntu
  2. pliki scp z komputera Mac -> Ubuntu
  3. zamknij pliki ssh i scp z Ubuntu -> Mac

Utworzyłem tylko klucze ssh na moim komputerze Mac (poprzez ssh-keygen) i udostępniłem je maszynie z systemem Ubuntu przez (ssh-copy-id). Mogłem więc kopiować pliki, gdy jestem zalogowany na komputerze Mac z komputera z systemem Ubuntu, ale nie na odwrót.

Rozwiązanie: Musiałem utworzyć klucze ssh na maszynie Ubuntu i udostępnić je na moim komputerze Mac. wtedy mogę pomyślnie uruchomić następujące polecenie na komputerze Ubuntu

Mac IP: 192.168.1.40
Ubuntu IP: 192.168.1.38

Na Macu

ssh-keygen
ssh-copy-id [email protected]

ssh [email protected]

# Now on Ubuntu
ssh-keygen
ssh-copy-id [email protected]

A teraz następujące polecenie powinno skopiować plik bez pytania o hasło do MAC

sudo scp -i /home/ubuntu/.ssh/id_rsa [email protected]:~/Documents/Fluff/Version-Control/tools/pull.sh .
Patrick Walter
źródło
0

Testowane i poprawione za pomocą tych instrukcji: https://askubuntu.com/questions/46930/how-can-i-set-up-password-less-ssh-login

Instrukcje tutaj działały bezbłędnie, kiedy testowałem na moich urządzeniach (CentOS / CentOS). Wyobrażam sobie, że problem polega na tym, że twoje klucze ssh nie są powiązane z nazwą użytkownika.

Przykład: kot authorized_keys # na polu mam sshing / scpin' do ssh-rsa BLAHBLAHBLAHBLAH / zAcS4kD9pyPAjD3 / gd5D1rcQa6IztCMR9yMXiGFnxviWsT8 / oYevZw25k4yREuA8ibLKC9peH1X4LK1E + n7gq4TETexWkZbQ2XGLOX44eglra3MB4FShPg0cZXGcJWltPQ / y0Ay2A / KmaC14YrDfqwm7 + ibTiUp4hOO8I6eIPmwwGn / 2hs0SewJXisGqUx2v [email protected] #username jest przywiązany do klucza i jest autoryzowany host

Max Humphrey
źródło