Как перенести ssh на другой компьютер

Обновлено: 21.11.2024

Я использую компьютер с Linux (centos), я уже подключился к другой системе с помощью ssh. Теперь мой вопрос: как я могу копировать файлы из одной системы в другую?

Предположим, в моей среде есть две системы, такие как System A и System B . Я использую компьютер с Системой A, а некоторые другие используют компьютер с Системой B.

Как скопировать файл из системы B в систему A? И скопировать файл из системы A в систему B?

отчасти связано: создайте зашифрованный архив локального каталога/ на удаленной машине с помощью ssh: tar -c dir/ | сжатие | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'

Если у вас есть доступ к ftp удаленного сервера, мы также можем использовать wget для загрузки, например $wget -r --level=9 --no-parent --reject "index.html*" ftp:// :

Не повторяющийся, связанный вопрос конкретно просит не использовать scp ; для этого один scp подходит и является самым простым способом ответа, поэтому моды, пожалуйста, удалите дублирующийся флаг, так как если кто-то перейдет к другому, самый полезный ответ будет пропущен.

10 ответов 10

Чтобы скопировать файл из B в A при входе в B:

Чтобы скопировать файл из B в A при входе в A:

Чтобы уточнить, вы обычно не используете scp для копирования файла на локальный компьютер или с него (система A), когда вы вошли на удаленный сервер (система B) с помощью ssh . scp зарегистрирует вас на удаленном сервере, скопирует файл, а затем снова выйдет из системы в одном процессе, поэтому просто запустите его из оболочки на вашем локальном компьютере. При этом вы можете использовать scp, если вы вошли в систему B через SSH и хотите копировать файлы между системой B и системой C.

@DopeGhoti. Да, вы не можете перемещать файлы между двумя удаленными компьютерами. Либо источником, либо местом назначения должен быть локальный файл. Однако если вы войдете на удаленный компьютер с помощью ssh, вы сможете копировать файлы между двумя удаленными компьютерами из командной строки этого компьютера.

Кроме того, важно помнить, что вы можете использовать только scp для папки на целевом компьютере, для которой у вас есть разрешения. Если вы пытаетесь скопировать его в место назначения, на которое у целевого пользователя нет разрешения, сначала скопируйте файл в домашний каталог или подкаталог пользователя, а затем ssh на целевую машину и sudo переместите его в конечное место назначения

У меня есть аккаунты на двух машинах: H1 и H2. Я создал ключи ssh на H1 и установил их на S1. Теперь я могу подключиться по ssh к S1 с H1. Я хочу сделать то же самое из H2. Как установить ключи ssh, сгенерированные на H1, на H2?

Поскольку ssh-copy-id более надежен (без перезаписи существующих ключей или случайного копирования частного ключа вместо открытого ключа) и менее известен решение, рассмотрите возможность принять один из этих ответов в качестве принятого ответа.

ssh-copy-id копирует открытые ключи на удаленный компьютер, он никогда не копирует закрытые ключи, это не то, о чем спрашивал OP.

7 ответов 7

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

Вы можете скопировать закрытые ключи с H1 на H2, если хотите использовать тот же закрытый ключ для входа с H2 на S1. Когда вы в H1 выполняете команды:

Внимание! Это удалит и заменит любой закрытый ключ, который у вас был на H2.

Лучше сгенерировать новые закрытые ключи на H2 ( ssh-keygen ) и установить их общедоступную часть на S1 с помощью утилиты ssh-copy-id. В этом более безопасном случае у вас будет два набора ключей; один для входа в систему H1-S1, а второй для входа в систему H2-S1. Будет два открытых ключа, авторизованных на S1. И вы сможете отозвать любой из них или оба (например, когда у вас украдут ноутбук или владелец машины решит отключить вашу учетную запись и повторно использовать все ваши файлы).

Копирование закрытого ключа — не очень хорошая идея. Наличие одного ключа в нескольких местах 1. делает его более уязвимым, 2. увеличивает риск того, что вы потеряете контроль над всеми местами, 3. не позволяет отключить доступ только из одного места. С точки зрения безопасности вы должны генерировать новую пару ключей в каждом месте — решение от Mu Qiao.

Я понимаю, что этому уже 9 лет, и, возможно, тогда оно было актуальным. Я бы сказал, что H1 = H2 безопасен! Если вы достаточно умны, чтобы заменить его, когда ваше снаряжение украдут, вы получите огромное преимущество, зная, где вы его использовали. Это тот же аргумент, следует ли мне использовать менеджер паролей с мастер-пропуском для всех паролей. Если машина украдена, то вы в любом случае скомпрометированы, это только удваивает ваши шансы быть украденным. Но безопасность вокруг ключей во много раз выше, чем в два раза, преимущество только в отслеживании 1. Это старая школа, например, менять пароль каждые 3 месяца.

сценарий: у вас разные H1 и H2, и ваш ноутбук украден. Какой открытый ключ вы удаляете из S1, S2 и S3. ? потому что большинство открытых ключей выглядят одинаково, так что теперь вам придется удалить почти все, и всем (включая вас) придется повторно аутентифицироваться.

ssh-copy-id — это скрипт, использующий ssh ​​для входа на удаленную машину и добавления указанного файла идентификации в файл ~/.ssh/authorized_keys этой машины.

@Я хочу использовать ssh с H2 на S1. Я хочу перенести и установить свой закрытый и открытый ключ с H1 на H2. Будет ли это делать?

@Bruce нет, вам нужно повторно сгенерировать ключи на h2 и использовать эту команду для копирования ваших ключей. Другой подход — позволить h1 и h2 совместно использовать домашний каталог.

Использовать два закрытых ключа

Настройте H2, используя тот же процесс (но не тот же закрытый ключ), что и при настройке H1:

  • Нет веской причины копировать закрытый ключ с другого компьютера. Если вы еще не сгенерировали новый закрытый ключ на H2, сделайте это сейчас. Также сгенерируйте соответствующий открытый ключ. В терминале на H2

тип: ssh-keygen -t rsa

  • Скопируйте открытый ключ H2 на сервер. В терминале на H2

(но используйте свое фактическое имя пользователя на S1 и имя хоста S1, а позже введите свой пароль на S1, когда он его запросит).

Это установит открытый ключ вашей рабочей станции в файл ~/.ssh/authorized_keys для этого пользователя на сервере.

  • Шаг 3 отсутствует. С этого момента вы можете входить в S1 со своего H2, а также входить в S1 со своего H1.

детали

Я предполагаю, что вы действительно спрашиваете

  • У меня есть сервер ("S1")
  • Я захожу на свой сервер с моего личного ноутбука ("H1")
  • Я также хочу войти на свой сервер с моей рабочей станции ("H2").

Как это правильно сделать?

  • Полагаю, я мог бы просто войти в систему с одним и тем же паролем из обоих мест. Это не может быть правильным путем, потому что все говорят, что аутентификация с открытым ключом намного лучше, чем пароли. (а)
  • Полагаю, я мог бы просто скопировать закрытый ключ со своего ноутбука на свою рабочую станцию. Это не может быть правильным путем, потому что все говорят, что закрытый ключ никогда не должен покидать клиентскую машину.

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

Системы с открытым ключом, такие как ssh, лучше, чем система паролей: одна учетная запись на сервере имеет одно имя пользователя и любое количество авторизованных открытых ключей, все они перечислены в файле ~/.ssh/authorized_keys.

Все вопросы здесь касаются проблемы копирования удостоверений с одного сервера на другой с использованием ssh-copy-id , что не является предметом вопроса.

Проблема, которую, кажется, задают вопросы, заключается в том, как использовать одну и ту же пару закрытый-открытый ключ, сгенерированную и используемую на персональном компьютере (H1), на другом персональном компьютере (H2), чтобы не приходилось настроить новый закрытый-открытый ключ и вручную добавить его на каждый сервер, к которому мы подключались раньше.

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

  1. Скопируйте свой личный (например, ~/.ssh/id_rsa) и общедоступный (например, ~/.ssh/id_rsa.pub) со своего компьютера H1 на свой компьютер H2 в местоположении ~/.ssh (Делайте это только через доверенный USB-накопитель). которые вы впоследствии отформатируете, не используйте электронные письма или любые другие интернет-средства). Когда вы выполните следующую команду в H2 ls -alt ~/.ssh, вывод будет содержать как минимум следующее:
    1. На H2 измените разрешение закрытого ключа на менее доступное (иначе следующий шаг завершится ошибкой) с помощью команды chmod 600 ~/.ssh/id_rsa , чтобы вывод следующей команды ls -alt ~/. ssh будет содержать следующее (обратите внимание на отличие от указанного выше разрешения):
      1. Последний шаг. на H2 теперь используйте команду ssh-add ~/.ssh/id_rsa, чтобы разрешить использование пары закрытый-открытый ключ для идентификации себя с H2 на любом сервере, к которому вы будете подключаться, используя импортированный закрытый-открытый ключ .

      Теперь любая команда ssh или scp, такая как ssh yourUserName@ip-address, должна завершиться успешно, как если бы вы вошли в H1.

      Самый простой способ скопировать SSH-ключи одной машины на другую в Linux

      Несколько раз нам приходилось копировать ключи SSH.

      Ясмин Бано, 24 марта 2020 г.

      Например, в моем случае мне нужны общие ключи SSH между ноутбуком и офисным компьютером. Когда я попытался погуглить, результат меня удивил чрезмерной сложностью методов копирования ключей SSH.

      Итак, здесь я делюсь несколькими самыми простыми методами, которые мы использовали для копирования ключей SSH с одного компьютера на другой.

      Скопируйте SSH-ключи на реальный компьютер

      Этот блог в основном посвящен этой части.Чтобы скопировать ключи SSH с одной машины на другую реальную машину, выполните следующие действия: * Откройте машину 1 (например, ваш компьютер) и скопируйте папку .ssh на USB-накопитель или любое другое запоминающее устройство. * Затем откройте свой компьютер2 (например, ноутбук).

      Теперь для копирования SSH-ключей вы можете использовать любой из следующих способов:

      Способ 1 с использованием SSH-ADD
      1. Поместите папку .ssh в папку ~/ или /home/$machine2. в машине2
      2. Запустите ssh-add на машине2.
      3. Теперь, что именно делает ssh-add. SSH-ADD похож на вспомогательную программу для SSH-AGENT. SSH-ADD добавляет идентификаторы закрытого ключа (из вашего каталога ~/.ssh) в агент аутентификации (ssh-agent), чтобы ssh-agent мог позаботиться об аутентификации за вас. Для получения более подробной информации нажмите здесь.
      4. Теперь проверьте ключи SSH на компьютере2 (например, на ноутбуке).
      5. Если вы по-прежнему сталкиваетесь с проблемами, проверьте права доступа к папке .ssh и убедитесь, что предоставлены правильные разрешения.
      Способ 2: копирование SSH-ключей вручную
      1. Скопируйте папку .SSH с устройства хранения в любое место на компьютере2.
      2. Теперь сгенерируйте новые ключи SSH на машине2.
      3. Следующий шаг — один за другим заменить содержимое всех файлов папки .SSH на компьютере 2 ключами SSH на компьютере 1.
      4. При использовании этого метода вам не нужно беспокоиться о разрешениях ключей SSH.

      Копировать ключи SSH на виртуальную машину

      Скопировать ключи ssh на удаленную машину довольно просто. Вы можете следовать этому замечательному руководству по цифровому океану по ключам SSH. Вот и все

      Если у вас есть предложения или трудности с настройкой, напишите об этом в разделе комментариев ниже.

      ssh-copy-id устанавливает ключ SSH на сервер в качестве авторизованного ключа. Его цель — предоставить доступ, не требуя пароля для каждого входа в систему. Это упрощает автоматический вход без пароля и единый вход с использованием протокола SSH.

      Инструмент ssh-copy-id является частью OpenSSH.

      Содержание

      Настройка аутентификации с открытым ключом

      Аутентификация на основе ключа в SSH называется аутентификацией с открытым ключом. Цель ssh-copy-id — упростить настройку аутентификации с открытым ключом. Процесс выглядит следующим образом.

      Создать SSH-ключ

      В OpenSSH ключ SSH создается с помощью ssh-keygen . В самой простой форме просто запустите ssh-keygen и ответьте на вопросы. Следующий пример иллюстрирует это.

      Создание пары ключей (открытый ключ и закрытый ключ) занимает всего минуту. Файлы ключей обычно хранятся в каталоге ~/.ssh.

      Скопируйте ключ на сервер

      После создания ключа SSH можно использовать команду ssh-copy-id для его установки в качестве авторизованного ключа на сервере. После авторизации ключа для SSH он предоставляет доступ к серверу без пароля.

      Чтобы скопировать ключ SSH, используйте следующую команду:

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

      На сервер копируется только открытый ключ. Закрытый ключ никогда не следует копировать на другой компьютер.

      Протестировать новый ключ

      После того как ключ был скопирован, лучше всего протестировать его:

      Теперь вход в систему должен выполняться без запроса пароля. Однако обратите внимание, что команда может запросить парольную фразу, которую вы указали для ключа.

      Устранение неполадок

      Существует ряд причин, по которым тест может не пройти:

      Возможно, сервер не настроен для проверки подлинности с открытым ключом. Убедитесь, что /etc/ssh/sshd_config на сервере содержит PubkeyAuthentication yes. Не забудьте перезапустить процесс sshd на сервере.

      Если вы пытаетесь войти в систему как пользователь root , возможно, сервер не настроен для разрешения входа в систему с правами root. Убедитесь, что /etc/sshd_config включает в себя PermitRootLogin yes, PermitRootLogin запрещающий пароль или без пароля. Если установлено значение force-commands-only , ключ необходимо настроить вручную для использования принудительной команды (см. параметр command= в ~/.ssh/authorized_keys .

      Убедитесь, что клиент разрешает аутентификацию с открытым ключом. Убедитесь, что /etc/ssh/config включает PubkeyAuthentication yes .

      Попробуйте добавить параметр -v к команде ssh, используемой для теста. Прочтите вывод, чтобы узнать, что он говорит о том, был ли опробован ключ и какие методы проверки подлинности готов принять сервер.

      OpenSSH позволяет автоматически использовать не более пяти ключей. Если у вас больше ключей, вы должны указать, какой ключ использовать, используя параметр -i для ssh .

      Как работает ssh-copy-id

      ssh-copy-id использует протокол SSH для подключения к целевому хосту и загрузки ключа пользователя SSH. Команда редактирует файл author_keys на сервере. Он создает каталог .ssh, если он не существует. Он создает файл авторизованных ключей, если он не существует. По сути, ключ ssh скопирован на сервер.

      Он также проверяет, существует ли уже ключ на сервере. Если не указан параметр -f, каждый ключ добавляется в файл разрешенных ключей только один раз.

      Кроме того, это гарантирует, что файлы ключей имеют соответствующие разрешения. Как правило, домашний каталог пользователя или любой файл или каталог, содержащий файлы ключей, не должен быть доступен для записи кем-либо еще. В противном случае кто-то другой может добавить новые авторизованные ключи для пользователя и получить доступ. Файлы закрытых ключей не должны быть доступны для чтения кем-либо еще.

      Некоторые рекомендации по работе с ключами SSH

      Ключи SSH очень полезны, но могут привести к проблемам, если ими неправильно управлять. Они являются учетными данными для доступа точно так же, как имена пользователей и пароли. Если они не удаляются должным образом, когда люди уходят или системы выводятся из эксплуатации, никто больше не может знать, кто на самом деле имеет доступ к каким системам и данным. Многие крупные организации имеют миллионы ключей SSH.

      По возможности используйте кодовую фразу

      Рекомендуется, чтобы ключи, используемые для единого входа, имели кодовую фразу, чтобы предотвратить использование ключа в случае его кражи или непреднамеренной утечки. Можно использовать программы ssh-agent и ssh-add, чтобы не вводить кодовую фразу каждый раз при использовании ключа.

      Как правило, все ключи, используемые для интерактивного доступа, должны иметь кодовую фразу. Ключи без парольной фразы полезны для полностью автоматизированных процессов. Они позволяют сценариям оболочки, программам и инструментам управления автоматически входить на серверы. Это часто используется для резервного копирования и передачи данных между информационными системами.

      По возможности добавьте ограничение на команду

      Инструмент copy-id не добавляет к клавишам ограничения команд автоматически. Настоятельно рекомендуется использовать ограничения команд, когда ключ используется для автоматизации операций, таких как запуск отчета для выборки некоторых файлов. Командное ограничение — это в основном параметр команды, добавленный в начало строки в файле author_keys сервера.

      Управление ключами SSH

      Всем, у кого больше нескольких десятков серверов, настоятельно рекомендуется управлять ключами SSH . Отсутствие управления ключами подвергает организацию значительным рискам, включая потерю конфиденциальности, введение мошеннических транзакций и полное уничтожение систем.

      Инструмент copy-id может быть опасен. Он может легко случайно установить несколько ключей или непреднамеренные ключи как авторизованные. Логика выбора ключа для установки запутана. Дополнительные авторизованные ключи обеспечивают постоянный доступ. Позже их можно использовать для распространения атак между хостами, и чем больше ключей, тем выше риск. Это также нарушает все нормативные требования .

      Универсальный диспетчер ключей SSH — широко используемый продукт для управления ключами SSH.

      Параметры командной строки

      В примере ниже представлен синтаксис командной строки ssh-copy-id:

      Параметры имеют следующее значение:

      -f Не проверять, настроен ли ключ уже как авторизованный на сервере. Просто добавьте это. Это может привести к появлению нескольких копий ключа в файлах author_keys.

      -i Указывает копируемый файл идентификации (по умолчанию ~/.ssh/id_rsa). Если этот параметр не указан, добавляются все ключи, перечисленные с помощью ssh-add -L. Примечание: это может быть несколько ключей, и добавление дополнительных авторизованных ключей может произойти случайно! Если ssh-add -L не возвращает ключей, будет использоваться последний измененный ключ, соответствующий ~/.ssh/id*.pub , за исключением тех, которые соответствуют ~/.ssh/*-cert.pub .

      -n Просто напечатать ключ(и), которые будут установлены, без их фактической установки.

      -o ssh_option Передать -o ssh_option клиенту SSH при установлении соединения. Это можно использовать для переопределения параметров конфигурации для клиента. См. параметры командной строки ssh и возможные параметры конфигурации в ssh_config .

      -p порт Подключиться к указанному порту SSH на сервере вместо порта 22 по умолчанию.

      -h или -? Распечатать сводку об использовании.

      Ssh-copy-id на Mac

      Хотя MacOS включает SSH, он не включает ssh-copy-id из порта. Однако, согласно некоторым источникам, MacOS 10.12.4 включает его, и предположительно все новые версии также включают его.

      Вы можете проверить, есть ли он на вашем Mac, открыв окно терминала (Finder / Go / Utilities / Terminal) и введя ssh-copy-id .

      Если в вашей системе его нет, есть много способов установить версию ssh-copy-id для Mac.

      Установка с помощью Homebrew

      Чтобы установить его с помощью Homebrew, используйте следующую команду. Вам необходимо установить команду brew.

      Установка с MacPorts

      Следующая команда установит его с помощью MacPorts. Вам необходимо установить команду порта.

      Установка с помощью Curl

      Следующую команду можно использовать для прямой установки версии для Mac. Обратите внимание, что, как правило, мы не рекомендуем передавать какие-либо команды из сети в оболочку, как это делается. Используйте этот метод, только если вы полностью доверяете источнику.Преимущество этого метода в том, что для него не требуется никакого специального программного обеспечения — программа curl предустановлена.

      Вместе с нашими клиентами наша миссия состоит в том, чтобы защитить их цифровой бизнес в локальных, облачных и гибридных экосистемах экономически эффективно, в любом масштабе и без сбоев в их работе или непрерывности бизнеса.

      SSH или Secure Shell — это протокол, обеспечивающий безопасный доступ к удаленным компьютерам. Приложения для передачи файлов, такие как sftp и rsync, также могут использовать SSH для защиты своей передачи.

      Эти приложения позволяют нам копировать наши файлы с локальных на удаленные серверы и копировать файлы с удаленных серверов на наш локальный компьютер. Реализация SSH также поставляется с утилитой scp для удаленной передачи файлов, которая по умолчанию использует протокол SSH.

      Ниже приведены примеры использования этих приложений для передачи файлов на основе описанной выше настройки:

      Убедитесь, что у вас есть SSH доступ к удаленному серверу с соответствующими правами доступа к удаленным файлам и папкам

      Способы удаленной передачи файлов по SSH:

      Передача файла с помощью scp

      Самый простой из них — scp или защищенное копирование. В то время как cp предназначен для копирования локальных файлов, scp предназначен для удаленной передачи файлов, где оба используют почти одинаковый синтаксис. Основное отличие состоит в том, что при использовании scp вам нужно будет указать DNS имя или IP-адрес удаленного хоста и предоставить учетные данные для входа в систему. команду на работу. Вы можете scp файлы перемещать с локального на удаленный и с удаленного на локальный.

      Если целевая папка (/remote/folder/) не указана, файл будет скопирован в домашний каталог удаленного пользователя.

      Использование . в качестве цели копирования (замена localfile.txt приведет к копированию удаленного файла в текущий рабочий каталог с использованием того же имени файла (remotefile.txt< /эм>)

      remoteuser должен существовать и иметь разрешение на запись в /remote/folder/ в удаленной системе.

      Программы с

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

      Передача файла по sftp

      Связано: WinSCP также можно использовать для передачи файлов по протоколу SFTP, но с графическим интерфейсом. Другой популярный инструмент — FileZilla.

      Передача файла с помощью rsync

      Вы также можете использовать ssh для защиты сеанса rsync. Для этого используйте --rsh=ssh или -e “ssh” с вашими обычными командами rsync. Следующие 2 команды будут работать точно так же;

      Если эти параметры не указаны, rsync сначала попытается подключиться к rsyncd, но автоматически переключится на SSH, если rsyncd не запущен в удаленной системе.

      Смонтировать удаленную файловую систему локально

      Удаленные файловые системы могут быть смонтированы на локальном хосте и доступны как локальная файловая система. Для монтирования удаленной файловой системы требуется SSH доступ к удаленному хосту и использование sshfs.

      сообщить об этом объявлении

      Автор: Мохд Шакир Закария
      Облачный архитектор по профессии, но всегда считал себя разработчиком, предпринимателем и энтузиастом открытого исходного кода.

      Оставляйте комментарии анонимно. Логин не требуется.

      сообщить об этом объявлении

      Читайте также: