Как я могу использовать свой ключевой файл для передачи данных с одного сервера на другой?

25

Я не могу scp, другой сервер принимает только соединения sftp.

В настоящее время я пытаюсь сделать

sftp jay@server.name.com:/files> put -r ~/

-i keynameне работает, просто решает с illegal option -- i.

сойка
источник

Ответы:

35

Пытаться:

sftp -o "IdentityFile=keyname" jay@server.name.com

Вы можете использовать -oдля передачи любой опции, которая действительна в ~/.ssh/config.

Celada
источник
Успешно справился. Благодарность! как я могу держать его там нормально?
Джей
Я не знаю, что вы подразумеваете под "держать его там как обычно". Если вы имеете в виду, что вы хотите, чтобы IdentityFileопция всегда предоставлялась автоматически, посмотрите ответ UtahJarhead о ее включении~/.ssh/config
Celada
4

Скопируйте ваш ключ PUBLIC на сервер, используя традиционные средства.

На сервере:

  • Создайте, .sshесли он не существует:
[[! -d "$ {HOME} /. ssh"]] && mkdir -p "$ {HOME} /. ssh"
  • Реализуйте открытый ключ:
cat /path/to/public_key.pub >> "$ {HOME} /. ssh / authorized_keys"
  • Установите соответствующие разрешения. OpenSSH является ОЧЕНЬ АНАЛЬНЫМ относительно прав доступа к рассматриваемым файлам:
chmod go-rwx "$ {HOME}" "$ {HOME} /. ssh / authorized_keys"

После этого вы сможете войти с клиента, используя ключ PRIVATE. Чтобы автоматизировать передачу, вы хотите использовать пакетный файл, который представляет собой просто текстовый файл, содержащий список команд для выполнения.

echo "положить имя файла.foo /safe/path/filename.foo" >> /tmp/batchfile.txt
sftp -b /tmp/batchfile.txt -oIdentityFile = / path / to / private_key user @ host

Кроме того, не стесняйтесь создавать файл ~ / .ssh / config в формате ssh_config, чтобы вы могли просто напечатать его в будущем:

sftp -b /tmp/batchfile.txt host

Пример содержимого ~/.ssh/config

Хост the_hostname
    Пользователь user_name
    IdentityFile / path / to / private_key
UtahJarhead
источник
Я попробую это на следующей партии, хотя решение, приведенное выше, сработало.
Джей
1

Если вы хотите настроить sftp на ec2, эта статья может помочь

Anshu
источник
Извините, это действительно не так.
Джей
1
Этот «ответ» не имеет ничего общего с вопросом. Хуже того, это просто ссылка на страницу, которая когда-нибудь исчезнет.
Джон Мэр
0

Недавно я попал в эту проблему, и то, что мне помогло в настройке терминала по умолчанию на моем MacBook, таково:

sftp -i ./privateFilePath.key username@url.com

Обратите внимание, что вы можете получить повышение с помощью незащищенного частного ключа! сообщение, в этом случае вам нужно выполнить эту команду, чтобы убедиться, что ваш закрытый ключ не доступен другим.

chmod 600 privateFilePath.key 

В некоторых случаях вам нужно поставить sudo перед командой, это только если вы работаете в каталоге, защищенном от администратора

Я желаю, чтобы это было полезно :)

KhaledMohamedP
источник
Почему вы ожидаете, что это будет полезно, когда в вопросе сказано, что -iопция не работает?
Скотт