SCP через SSH без пароля - не может заставить его работать

Вот сценарий bash, который переименовывает файлы, переданные ему, на основе их угаданного формата. Он вызывает file, чтобы определить формат, просмотрев характерные шаблоны в первых байтах. file -i печатает строки типа /path/to/file: type/subtype, где type/subtype - тип MIME. Затем скрипт связывает расширения с известными типами и переименовывает файл для расширения. Файлы, которые уже имеют расширение, остаются в силе. Файлы, имеющие непризнанный тип, остаются в силе. Сценарий будет запрашивать перед перезаписью целевого файла.

#!/bin/bash
# usage:
# fixmime ./{**/,}*
file --mime-type "$@" |
while read -r line; do
  file=${line%:*}
  type=${line##* }
  case $type in

    #Audio
    audio/x-flac) ext=flac;;
    audio/mpeg) ext=mp3;;
    application/ogg) ext=ogg;;

    #Video
    video/mp4) ext=mp4;;
    video/x-flv) ext=flv;;
    application/octet-stream) ext=webm;;
    application/x-shockwave-flash) ext=swf;;

    #Images
    image/png) ext=png;;
    image/jpeg) ext=jpg;;
    image/gif) ext=gif;;
    image/x-ico) ext=ico;;

    #Text
    text/plain) ext=md;; #markup your notes, even when they are plain
    text/html) ext=html;;
    text/x-pascal) ext=py;;
    text/x-c++) ext=js;; #conflicts with .cpp, so use prefered
    text/x-c) ext=scss;; #usualy it is .c
    text/x-shellscript) ext=sh;;
    application/pdf) ext=pdf;;

    #Fonts
    application/x-font-ttf) ext=ttf;;
    application/vnd.ms-opentype) ext=otf;;

    #Archive
    application/x-gzip) ext=tar.gz;;
    application/x-bzip2) ext=tar.bz;;

    *) continue;;
  esac
  [[ $file = *.$ext ]] || mv -i -- "$file" "$file.$ext"
done

Сохраните сценарий как ~/bin/rename-based-on-content-type (или что вам угодно) и сделайте его исполняемым (chmod +x ~/bin/rename-based-on-content-type). Передайте имена файлов, которые вы хотите переименовать в сценарий в командной строке. Если у вас есть дерево каталогов /path/to/music/directory, которое вы хотите пройти рекурсивно, вызовите скрипт как

~/bin/rename-based-on-content-type /path/to/music/directory/{**/,}*
1
задан 18 October 2017 в 15:33

6 ответов

Я получил это отсортировано - я удалил все свои ключи и файлы ключей из обеих систем и проработал процесс создания новых файлов ключей и использовал ssh-copy-id для копирования файлов. Теперь он отлично работает.

Должно быть, некоторая неясная коррупция в файле authorizes_keys может испортить ее. Еще раз спасибо.

0
ответ дан 18 July 2018 в 05:07

Вы должны сделать следующие действия, чтобы сделать scp над ssh без пароля:

ssh-keygen [Enter] [Enter] [Enter] cd ~/.ssh ssh-copy-id -i id_rsa.pub username@serverip/hostname scp username@serverip:/file/to/copy /directory/to/save

Это будет работать, если вы получили какую-либо ошибку, пожалуйста, обновите.

1
ответ дан 18 July 2018 в 05:07

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

ssh и scp должны предоставлять такую ​​же обратную связь ( с разницей login-in-remote-server и copy-file-in-remote-server)

Когда ключ-пара будет скопирован по мере необходимости на удаленный сервер, команда scp будет:

scp local-file-name user@remote-host:/full/path/remote-file-name

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

Примечание: вы должен заменить mykey в приведенной ниже команде с именем файла вашего ключевого файла

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

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

Для копирования ключа SSH используйте следующую команду:

ssh-copy-id -i ~/.ssh/mykey user@host

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

Только открытый ключ копируется на сервер.

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

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

ssh -i ~/.ssh/mykey user@host

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

2
ответ дан 18 July 2018 в 05:07

Я получил это отсортировано - я удалил все свои ключи и файлы ключей из обеих систем и проработал процесс создания новых файлов ключей и использовал ssh-copy-id для копирования файлов. Теперь он отлично работает.

Должно быть, некоторая неясная коррупция в файле authorizes_keys может испортить ее. Еще раз спасибо.

0
ответ дан 24 July 2018 в 18:15
  • 1
    Спасибо, что поделились своим решением :-) Вы также можете «принять» один ответ и «повысить» полезные ответы. – sudodus 19 October 2017 в 15:33

Вы должны сделать следующие действия, чтобы сделать scp над ssh без пароля:

ssh-keygen [Enter] [Enter] [Enter] cd ~/.ssh ssh-copy-id -i id_rsa.pub username@serverip/hostname scp username@serverip:/file/to/copy /directory/to/save

Это будет работать, если вы получили какую-либо ошибку, пожалуйста, обновите.

1
ответ дан 24 July 2018 в 18:15

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

ssh и scp должны предоставлять такую ​​же обратную связь ( с разницей login-in-remote-server и copy-file-in-remote-server)

Когда ключ-пара будет скопирован по мере необходимости на удаленный сервер, команда scp будет:

scp local-file-name user@remote-host:/full/path/remote-file-name

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

Примечание: вы должен заменить mykey в приведенной ниже команде с именем файла вашего ключевого файла

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

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

Для копирования ключа SSH используйте следующую команду:

ssh-copy-id -i ~/.ssh/mykey user@host

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

Только открытый ключ копируется на сервер.

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

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

ssh -i ~/.ssh/mykey user@host

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

2
ответ дан 24 July 2018 в 18:15

Другие вопросы по тегам:

Похожие вопросы: