Если я хочу отправить что-то через scp на сервер:
$ scp file server:
_____ _____ _____
$
, затем печатаются три строки и файл не копируется. Однако я могу подключиться к серверу через SSH без проблем:
$ ssh server
Как заставить работать scp?
scp file server:
(предполагая, что «server» является допустимым именем хоста), файл копируется в каталог вашей учетной записи.scp
в другом месте на сервере, затемcp
илиmv
послеssh
Ответы:
Одной из возможных причин такого типа поведения является распечатка любого сообщения во время процесса входа на сервер. Scp зависит от ssh для обеспечения полностью прозрачного зашифрованного туннеля между клиентом и сервером.
Проверьте все сценарии входа на сервер, а также попробуйте использовать другого пользователя. Еще один метод определения источника ошибки - использовать -v в команде, чтобы отслеживать ход транзакции и видеть, где она терпит неудачу. При необходимости вы можете использовать до -vvv для увеличения многословия. Проверка различных форм scp также может быть поучительной, как указано в посте InChargeOfIT.
Под капотом scp устанавливает туннель с помощью ssh, а затем передает файл по этому туннелю с помощью команды ssh на дальнем конце, чтобы перехватить файл при его получении. Это иллюстрируется использованием tar и ssh для копирования структуры каталогов с сохранением времени владения и создания с помощью следующих команд:
отправить его и
чтобы вернуть это.
источник
enable
тот факт , что ваш пользователь может вводить и вводить пароль, не означает, что он имеет привилегию 15. Если вы не видите «привилегию 15» где-то в этом месте,show run | inc USERNAME
он не сможет выполнить scp.export SHELL=/bin/zsh
) в~/.bashrc
. Это иногда используется в отсутствиеchsh
.Проверьте .bashrc целевого пользователя или эквивалентный файл. ~ / .bashrc получен для неинтерактивных входов в систему. Если есть эхо или команда, которая что-либо выводит, это нарушит протокол SCP.
источник
fortune | cowsay
, просто поместите его в .bash_profile. Это только для интерактивных входов в систему и не должно быть получено во время сеанса SCP..bashrc
, который не существовал бы на другом компьютере. Вы можете использовать логику в этом ответе, чтобы пропустить,~/.bashrc
когда неинтерактивен (что имеет место дляscp
).Изменить: Вы уверены, что вводите правильный путь в команде scp? Например:
потерпит неудачу (фактически, она просто выведет команду, как вы видите). В этом случае вам нужно будет указать правильный путь к удаленному серверу. Например,
scp test.txt username@remoteserver.com:~/
Пример использования:
Отправить файл:
Получить файл:
Примеры:
Отправьте файл с рабочего стола в мою домашнюю папку на удаленном сервере:
Помните, что
~
это ярлык для вашего домашнего каталога ... например, / home /Отправьте файл в webroot:
В этом примере пользователю john_doe потребуются права на запись в каталог remote / var / www.
источник
------
... ни один из ваших примеров не связан с этим.scp somefile user@host.com:
также отсутствие правильных разрешений для удаленного каталога также может вызвать проблемы. Отредактировал мой ответ, чтобы сделать его немного понятнееНа некоторых хостах они неправильно
.bash_profile
используют неинтерактивные логины, такие как scp. Сообщения, которые печатаются на терминал, могут привестиscp
к неправильной работе. Если у вас есть сообщения в вашем,.bash_profile
это может быть причиной.Чтобы по-прежнему отображать ваши сообщения для входа в систему, баннер и т. Д. При интерактивном входе в систему и при этом использовать его
scp
через неинтерактивный вход в систему, добавьте следующее перед любым сообщением, которое будет напечатано в вашем.bash_profile
файле.Альтернативный код:
И еще один альтернативный код:
Который я полагаю, является более длинной версией первого альтернативного кода. Я обнаружил, что на некоторых хостах первый код не работает правильно, но второй работает.
Во время неинтерактивного входа в систему scp он прекратит дальнейшее выполнение .bash_profile и позволит scp работать, но при входе через ssh будут отображаться ваши сообщения для входа.
Примечание. Это также может быть использовано в вашем
.bashrc
файле, если вы используете его.bash_profile
для (для $ PATH), так что только часть его создается при неинтерактивных входах в систему.источник
Это не дает прямого ответа на вопрос, но может быть полезно для таких людей, как я, ищущих решение с зависанием scp при передаче файлов между двумя удаленными хостами.
Если
scp
зависает из-за сообщений от ssh, он может помочь подавить их:и / или
В моем случае это, казалось, помогло, но не решило всей проблемы. Мы не смогли выяснить, почему зависает scp при переносе с удаленного на удаленный. Он висел в середине файла. 9 раз получилось, попытка № 10 не удалась. Мы подозревали, что это может быть зависание, когда наше VPN-соединение на мгновение получает скачок трафика, а затем scp не восстанавливается. Он действительно просто висит навсегда и даже не выдает сообщение об ошибке.
Однако я сдался и переключился на sftp. Это значительно быстрее, так как используется прямое соединение между удаленными узлами. Вы должны включить
в файле ~ / .shh / config компьютера, на котором запущен скрипт. Конечно, это только решение, если оба удаленных компьютера находятся в вашей доверенной сети.
источник
Я звонил
exec /bin/bash
в.cshrc
.Удаление этого решило проблему для меня.
источник