Как удаленно копировать файлы через SSH без ввода пароля
SSH - это спасение, когда вам нужно удаленно управлять компьютером, но знаете ли вы, что вы также можете загружать и скачивать файлы? Используя ключи SSH, вы можете пропустить необходимость ввода пароля и использовать его для скриптов!
Этот процесс работает в Linux и Mac OS при условии, что они правильно настроены для доступа по SSH. Если вы используете Windows, вы можете использовать Cygwin для получения функциональности, подобной Linux, и с небольшой настройкой SSH также будет работать.
Копирование файлов по SSH
Безопасное копирование - действительно полезная команда, и ее очень легко использовать. Основной формат команды следующий:
scp [параметры] исходный_файл конечный_файл
Самый большой плюс в том, как отформатировать удаленную часть. Когда вы обращаетесь к удаленному файлу, вам нужно сделать это следующим образом:
пользователь @ сервер: путь / к / файлу
Сервер может быть URL-адресом или IP-адресом. Далее следует двоеточие, затем путь к рассматриваемому файлу или папке. Давайте посмотрим на пример.
scp -P 40050 Desktop / url.txt [email protected]: ~ / Desktop / url.txt
Эта команда имеет флаг [-P] (обратите внимание, что это заглавная буква P). Это позволяет мне указать номер порта вместо 22 по умолчанию. Это необходимо для меня из-за того, как я настроил свою систему.
Далее, мой оригинальный файл - «url.txt», который находится внутри каталога «Рабочий стол». Файл назначения находится в «~ / Desktop / url.txt», который совпадает с «/user/yatri/Desktop/url.txt». Эта команда выполняется пользователем «yatri» на удаленном компьютере «192.168.1.50».
Что делать, если вам нужно сделать наоборот? Вы можете копировать файлы с удаленного сервера аналогично.
Здесь я скопировал файл из папки «~ / Desktop /» на удаленном компьютере в папку «Рабочий стол» на моем компьютере..
Чтобы скопировать целые каталоги, вам нужно использовать флаг [-r] (обратите внимание, что это строчная буква r).
Вы также можете комбинировать флаги. Вместо
scp -P -r…
Вы можете просто сделать
scp -Pr…
Самое сложное в том, что завершение вкладок не всегда работает, поэтому полезно иметь еще один терминал с запущенным SSH-сеансом, чтобы вы знали, где что-то разместить..
SSH и SCP без паролей
Безопасное копирование отлично. Вы можете поместить его в сценарии и сделать его резервное копирование на удаленные компьютеры. Проблема в том, что вы не всегда можете ввести пароль. И, честно говоря, очень сложно ввести пароль на удаленный компьютер, к которому у вас, очевидно, есть постоянный доступ..
Ну, мы можем обойти пароли, используя файлы ключей. Мы можем заставить компьютер генерировать два ключевых файла - один общедоступный, который принадлежит удаленному серверу, и один частный, который находится на вашем компьютере и должен быть защищенным - и они будут использоваться вместо пароля. Довольно удобно, верно?
На вашем компьютере введите следующую команду:
ssh-keygen -t rsa
Это сгенерирует два ключа и поместит их в:
~ / .Ssh /
с именами «id_rsa» для вашего личного ключа и «id_rsa.pub» для вашего открытого ключа.
После ввода команды вас спросят, где сохранить ключ. Вы можете нажать Enter, чтобы использовать вышеупомянутые значения по умолчанию.
Далее вам будет предложено ввести кодовую фразу. Нажмите Enter, чтобы оставить это поле пустым, затем сделайте это снова, когда запросит подтверждение. Следующим шагом является копирование файла открытого ключа на удаленный компьютер. Вы можете использовать scp для этого:
Место назначения вашего открытого ключа находится на удаленном сервере в следующем файле:
~ / .Ssh / authorized_keys2
Последующие открытые ключи могут быть добавлены к этому файлу, так же, как файл ~ / .ssh / known_hosts. Это означает, что если вы хотите добавить еще один открытый ключ для своей учетной записи на этом сервере, вы скопируете содержимое второго файла id_rsa.pub в новую строку существующего файла author_keys2..
Вопросы безопасности
Разве это не менее безопасно, чем пароль??
В практическом смысле не совсем. Сгенерированный закрытый ключ хранится на компьютере, который вы используете, и никогда не передается, даже для проверки. Этот закрытый ключ ТОЛЬКО соответствует этому ОДНОМУ открытому ключу, и соединение должно быть запущено с компьютера, который имеет закрытый ключ. RSA довольно безопасен и по умолчанию использует длину 2048 бит.
На самом деле это очень похоже на использование вашего пароля. Если кто-то знает ваш пароль, ваша безопасность выходит за рамки. Если у кого-то есть файл с вашим закрытым ключом, то безопасность теряется на любом компьютере, на котором есть соответствующий открытый ключ, но ему нужен доступ к вашему компьютеру, чтобы получить его..
Может ли это быть более безопасным?
Вы можете комбинировать пароль с ключевыми файлами. Следуйте инструкциям выше, но введите надежную фразу-пароль. Теперь, когда вы подключаетесь по SSH или используете SCP, вам нужен соответствующий файл закрытого ключа так же как правильный пароль.
После того, как вы введете парольную фразу один раз, вас больше не спросят, пока вы не закроете сеанс. Это означает, что при первом запуске SSH / SCP вам нужно будет ввести свой пароль, но для всех последующих действий он не потребуется. После того, как вы выйдете из своего компьютера (не удаленного) или закроете окно терминала, вам придется снова ввести его. Таким образом, вы на самом деле не жертвуете безопасностью, но вас также не беспокоят постоянно.
Могу ли я повторно использовать пару открытый / закрытый ключ?
Это действительно плохая идея. Если кто-то находит ваш пароль, и вы используете один и тот же пароль для всех своих учетных записей, то теперь они имеют доступ ко всем этим учетным записям. Точно так же ваш файл закрытого ключа также суперсекретен и важен. (Для получения дополнительной информации ознакомьтесь с разделом «Как восстановить пароль после взлома»)
Лучше всего создавать новые пары ключей для каждого компьютера и учетной записи, которую вы хотите связать. Таким образом, если один из ваших секретных ключей каким-то образом будет перехвачен, то вы будете подвергать риску только одну учетную запись на одном удаленном компьютере..
Также очень важно отметить, что все ваши личные ключи хранятся в одном и том же месте: в ~ / .ssh / на вашем компьютере вы можете использовать TrueCrypt для создания защищенного зашифрованного контейнера, а затем создавать символические ссылки в вашем ~ / .ssh / каталог. В зависимости от того, что я делаю, я использую этот супер-параноидальный супер-безопасный метод, чтобы успокоиться.
Вы использовали SCP в каких-либо сценариях? Вы используете файлы ключей вместо паролей? Поделитесь своим опытом с другими читателями в комментариях!