Я знаю, что это не рекомендуется, но возможно ли вообще передать пароль пользователя в scp?
Я хотел бы скопировать файл через scp как часть пакетного задания, и принимающему серверу, конечно же, нужен пароль, и нет, я не могу легко изменить его на аутентификацию на основе ключей.
linux
scp
io-redirection
Argelbargel
источник
источник
Ответы:
Вы можете написать его с помощью инструмента, как ожидаемо (есть также удобные привязки, такие как Pexpect для Python).
источник
Используйте sshpass :
или так пароль не отображается в истории Bash
Выше копирует содержимое пути с удаленного хоста на ваш локальный.
Установить:
apt install sshpass
yum install sshpass
port install sshpass
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
источник
apt-get install sshpass
yum -y install sshpass
sshpass -f
passwdfile` scp [...]. This way, the password won't show up in
ps` и т. Д., И вы можете защитить пароль с помощью прав доступа к файлу.просто сгенерируйте ключ ssh как:
скопировать содержимое
~/.ssh/id_rsa.pub
и, наконец, добавить его на удаленные компьютеры~/.ssh/authorized_keys
убедитесь, что удаленный компьютер имеет разрешения
0700 for ~./ssh folder
и0600 for ~/.ssh/authorized_keys
источник
ssh-copy-id -i ~/.ssh/id_rsa.pub <remote_server>
чтобы скопировать ключ на удаленном сервереЕсли вы подключаетесь к серверу из Windows, версия scp для Putty («pscp») позволяет вам передать пароль с
-pw
параметром.Это упоминается в документации здесь.
источник
pscp -pw 'MyPa$$word' username@servername:/somedir/somefile ~/somedest
(Я ненавижу использовать такуюcurl может использоваться как альтернатива scp для копирования файла, и он поддерживает пароль в командной строке.
источник
scp
пришлось подождать 30 с лишним секунд, чтобы я смог ввести пароль, ноcurl
сработало сразу.Вы можете использовать сценарий «ожидаем» в Unix / Terminal
Например, создайте 'test.exp':
запустить скрипт
Надеюсь, это поможет.
источник
Вот пример того, как вы делаете это с помощью
expect
инструмента:источник
Никто не упоминал об этом, но у Putty scp (pscp) есть опция -pw для пароля.
Документацию можно найти здесь: https://the.earth.li/~sgtatham/putty/0.67/htmldoc/Chapter5.html#pscp
источник
Вы можете использовать
ssh-copy-id
для добавления ключа ssh:Если существует:
источник
После настройки,
ssh-keygen
как описано выше, вы можете сделатьscp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/
Если вы хотите уменьшить время ввода каждый раз, вы можете изменить свой
.bash_profile
файл и поставитьТогда из твоего терминала делай
source ~/.bash_profile
. После этого, если вы введетеremote_scp
свой терминал, он должен запуститьscp
команду без пароля.источник
убедитесь, что у вас есть инструмент «ожидать», прежде чем, если нет, сделайте это
# apt-get install expect
создайте файл скрипта со следующим содержанием. (# vi / root / scriptfile)
spawn scp /path_from/file_name user_name_here@to_host_name:/path_to
expect "password:"
send put_password_here\n;
interact
выполнить файл скрипта с помощью инструмента «ожидается»
# expect /root/scriptfile
источник
Вот пример бедного человека Linux / Python / Expect, основанный на этом посте в блоге: Обновление простых оболочек до полностью интерактивных TTY . Мне это нужно для старых машин, где я не могу установить Expect или добавить модули в Python.
Код:
Вывод:
источник
В качестве альтернативы можно добавить открытую половину ключа пользователя в файл авторизованных ключей в целевой системе. В системе, из которой вы инициируете передачу, вы можете запустить демон ssh-agent и добавить частную половину ключа к агенту. Затем пакетное задание можно настроить на использование агента для получения закрытого ключа, а не запрашивать пароль ключа.
Это должно быть выполнимо либо в системе UNIX / Linux, либо на платформе Windows с использованием Pageant и pscp.
источник
Все решения, упомянутые выше, могут работать, только если вы установили приложение или у вас должны быть права администратора для установки кроме или sshpass.
Я нашел эту очень полезную ссылку, чтобы просто запустить scp в фоновом режиме.
https://charmyin.github.io/scp/2014/10/07/run-scp-in-background/
источник
шаги, чтобы получить sshpass для rhel / centos 6:
источник: https://community.mapr.com/thread/9040
источник
Я нашел этот действительно полезный ответ здесь .
Не только вы можете передать туда пароль, но и он покажет индикатор выполнения при копировании. Действительно удивительным.
источник