Jak korzystać z mojego pliku klucza, aby sftp przesyłać dane z jednego serwera na inny

25

Nie mogę scp, drugi serwer przyjmuje tylko połączenia sftp.

Obecnie próbuję to zrobić

sftp [email protected]:/files> put -r ~/

-i keynamenie działa, po prostu rozwiązuje illegal option -- i.

Sójka
źródło

Odpowiedzi:

34

Próbować:

sftp -o "IdentityFile=keyname" [email protected]

Możesz użyć, -oaby przekazać dowolną ważną opcję ~/.ssh/config.

Celada
źródło
Przybiłam to. dzięki! jak mam go tam normalnie trzymać?
Jay
Nie wiem, co rozumiesz przez „trzymaj to normalnie”. Jeśli masz na myśli, że chcesz, aby IdentityFileopcja była zawsze podawana automatycznie, sprawdź odpowiedź UtahJarhead na temat jej wprowadzenia~/.ssh/config
Celada,
4

Skopiuj swój klucz PUBLICZNY na serwer w tradycyjny sposób.

Na serwerze:

  • Utwórz, .sshjeśli nie istnieje:
[[! -d „$ {HOME} /. ssh”]] && mkdir -p „$ {HOME} /. ssh”
  • Zaimplementuj klucz publiczny:
cat /path/to/public_key.pub >> "$ {HOME} /. ssh /
  • Ustaw odpowiednie uprawnienia. OpenSSH jest BARDZO ANALNY w zakresie uprawnień do danych plików:
chmod go-rwx "$ {HOME}" "$ {HOME} /. ssh / Author_keys"

Następnie powinieneś być w stanie zalogować się z klienta za pomocą klucza PRYWATNEGO. Aby zautomatyzować transfer, chcesz użyć pliku wsadowego, który jest po prostu plikiem tekstowym zawierającym listę poleceń do wykonania.

echo „umieść nazwę pliku.foo /safe/path/filename.foo” >> /tmp/batchfile.txt
sftp -b /tmp/batchfile.txt -oIdentityFile = / path / to / private_key użytkownik @ host

Alternatywnie, możesz utworzyć plik ~ / .ssh / config w formacie ssh_config, abyś mógł po prostu wpisać to w przyszłości:

sftp -b /tmp/batchfile.txt host

Przykładowa zawartość ~/.ssh/config

Host the_hostname
    Użytkownik nazwa_użytkownika
    IdentityFile / path / to / private_key
Utah Jarhead
źródło
Spróbuję tego w następnej partii, ale powyższe rozwiązanie załatwiło sprawę.
Jay
1

Jeśli chcesz skonfigurować sftp na ec2, ten artykuł może ci pomóc

Anshu
źródło
Przepraszam, naprawdę nie.
Jay
1
Ta „odpowiedź” nie ma nic wspólnego z pytaniem. Co gorsza, jest to tylko link do strony, która kiedyś zniknie.
John Mayor,
0

Niedawno zająłem się tym problemem i to, co zadziałało w mojej domyślnej konfiguracji terminala Macbook, jest następujące

sftp -i ./privateFilePath.key [email protected]

Pamiętaj, że możesz awansować z NIEBEZPIECZNYM PRYWATNYM KLUCZEM! wiadomość, w którym to przypadku musisz uruchomić to polecenie, aby upewnić się, że Twój klucz prywatny nie jest dostępny dla innych.

chmod 600 privateFilePath.key 

W niektórych przypadkach musisz umieścić sudo przed poleceniem, dzieje się tak tylko wtedy, gdy pracujesz w katalogu chronionym przez administratora

Chciałbym, żeby było to pomocne :)

KhaledMohamedP
źródło
Dlaczego oczekujesz, że będzie to pomocne, gdy w pytaniu było napisane, że -iopcja nie działa?
Scott,