Як віддалено копіювати файли через SSH без введення пароля
SSH - це рятівник, коли вам потрібно віддалено керувати комп'ютером, але чи знаєте ви, що ви також можете завантажувати і завантажувати файли? За допомогою ключів SSH можна пропустити введення паролів і використовувати його для сценаріїв!
Цей процес працює на Linux і Mac OS, за умови, що вони правильно налаштовані для доступу до SSH. Якщо ви використовуєте Windows, ви можете використовувати Cygwin, щоб отримати функціональність, подібну до Linux, і з невеликим налаштуванням, SSH також буде працювати.
Копіювання файлів через SSH
Безпечна копія дійсно корисна команда, і вона дуже проста у використанні. Основний формат команди такий:
scp [варіанти] оригінальний_файл призначення_файл
Найбільший кікер - це форматування віддаленої частини. Коли ви звертаєтеся до віддаленого файлу, вам потрібно зробити це таким чином:
user @ server: шлях / до / файл
Сервер може бути URL-адресою або IP-адресою. Далі йде двокрапка, потім шлях до файлу або папки. Давайте розглянемо приклад.
scp -P 40050 Шпалери для робочого столу / 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 у новий рядок існуючого файлу authorized_keys2..
Міркування безпеки
Чи не менш безпечний, ніж пароль?
У практичному сенсі не дуже. Створений закритий ключ зберігається на комп'ютері, який ви використовуєте, і він ніколи не передається, навіть не перевіряється. Цей закритий ключ ТІЛЬКИ збігається з цим ОДИН відкритим ключем, і з'єднання потрібно запускати з комп'ютера, на якому є закритий ключ. RSA досить безпечний і використовує 2048 біт за замовчуванням.
Це насправді дуже схоже в теорії з використанням вашого пароля. Якщо хтось знає ваш пароль, ваша безпека виходить з вікна. Якщо хтось має ваш файл приватного ключа, то захист втрачається для будь-якого комп'ютера, який має відповідний публічний ключ, але для доступу до нього потрібний доступ до вашого комп'ютера.
Чи може це бути більш безпечним?
Ви можете комбінувати пароль з ключовими файлами. Виконайте описані вище дії, але введіть сильну парольну фразу. Тепер, коли ви підключаєтеся через SSH або використовуєте SCP, вам знадобиться відповідний файл приватного ключа так само, як відповідну фразу.
Після того, як ви введете свою парольну фразу один раз, вас знову не запитають, поки не закриєте сеанс. Це означає, що при першому запуску SSH / SCP потрібно ввести пароль, але всі наступні дії не вимагатимуть. Після того, як ви вийдете з комп'ютера (не віддаленого) або закрийте вікно терміналу, вам доведеться ввести його знову. Таким чином, ви насправді не жертвуєте безпекою, але ви також не турбуєтеся за паролями весь час.
Чи можна повторно використовувати пару відкритого / закритого ключів?
Це дуже погана ідея. Якщо хтось знаходить ваш пароль і ви використовуєте той самий пароль для всіх своїх облікових записів, то тепер вони мають доступ до всіх цих облікових записів. Аналогічно, ваш файл приватного ключа також надто секретний і важливий. (Більш детальну інформацію див. У розділі Як відновити пароль після порушення пароля електронною поштою)
Найкраще створювати нові пари ключів для кожного комп'ютера та облікового запису, який потрібно зв'язати. Таким чином, якщо один з ваших приватних ключів буде схоплений, то ви зможете компрометувати лише один обліковий запис на одному віддаленому комп'ютері.
Також дуже важливо відзначити, що всі ваші приватні ключі зберігаються в одному й тому ж місці: у ~ / .ssh / на вашому комп'ютері, ви можете використовувати TrueCrypt для створення безпечного, зашифрованого контейнера, а потім створювати символічні посилання у вашому ~ / .ssh / каталог. Залежно від того, що я роблю, я використовую цей супер-параноїдний надзахищений метод, щоб заспокоїтися.
Чи використовували ви SCP у будь-яких сценаріях? Чи використовуєте ви ключові файли замість паролів? Поділіться власним досвідом з іншими читачами в коментарях!