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

У меня есть файл на моем локальном компьютере, который я хочу скопировать на удаленный сервер с помощью программы SSH (не scp, not rsync, а не sftp), локальный файл является закрытым ключом SSL, и я не хочу создавать временные копии на Удаленный сервер во время передачи.

Корневой пользователь на удаленном сервере не может войти через SSH по соображениям безопасности, однако мой удаленный пользователь (с тем же именем пользователя, что и мой локальный пользователь) может внести коренные изменения через команду sudo после подсказки пароля.

Проблема: как скопировать локальный файл, войти в систему через SSH, переключиться на пользователя root с помощью пароля sudo а затем записать файл на удаленный сервер в корневой каталог пользователя? И желательно все в одной строке!

cat – ваш друг:

 cat key | ssh [email protected] sudo "cat > final_location" 

Но для этого потребуется аутентификация без пароля (может быть решена с помощью ControlMaster ) и sudo пароля ( NOPASSWD или аутентификация с использованием pam_ssh_agent_auth – я рекомендую попробовать эту, если вы знакомы с ssh-agent ).

Вы также можете временно разрешить корневые входы (с открытым ключом – есть опция PermitRootLogin without-password , которая делает именно то, что вы хотите), а затем вы можете просто использовать метод scp .

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

Это сделает то, что вы хотите. Обратите внимание на параметр -t, который передается в ssh. Это назначает TTY, так что запрос пароля sudo работает правильно.

 TEXT=`cat ~/.ssh/id_dsa.pub` ssh [email protected] -t sudo "bash -c \"echo '$TEXT' > foo.pub\"" 

Это работает до тех пор, пока в входных данных нет одиночных кавычек. Если есть, вы можете использовать base64 для кодирования / декодирования данных во время передачи.

 TEXT=`base64 ~/.ssh/id_dsa.pub` ssh [email protected] -t sudo "bash -c \"echo '$TEXT' | base64 -d > foo.pub\"" 
  • Может ли PuTTY открыть ссылку SSH, аналогичную терминалу для Macintosh?
  • Как перенести мои SSH-ключи на другую машину?
  • YouTube не работает через прокси-сервер SSH-туннеля на IP-адрес в США
  • Используя команду history с помощью ssh и получать выходные данные с отметками времени
  • Как сказать git, какой секретный ключ использовать?
  • Укажите личный SSH-ключ для использования при выполнении команды оболочки?
  • Смарт-карты для хранения ключей gpg / ssh (Linux) - что мне нужно?
  • Scp между двумя удаленными хостами от моего (третьего) компьютера
  • Hostdomonster Subdomain перенаправляется на домашний сервер IP: как ssh на домашний сервер с использованием субдомена
  • Как перезагрузить состояние сеанса SSH?
  • Автоматическое повторное подключение SSH-соединений с определенным сеансом «экрана»
  • Давайте будем гением компьютера.