Имя пользователя и пароль в командной строке с помощью sshfs

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

echo "line 1 and line 2" | awk -v separator="and" 'BEGIN {FS=separator} $0 ~ separator {printf "%s\n%s%s", $1,FS,$2}'

Я всегда предпочитаю использовать awk из-за возможности простого использования переменных. Если вы хотите разделить вашу строку на основе других разделителей , вы можете просто изменить значение разделителя на другое.

Если вы хотите вырезать разделитель из второй строки (я имею в виду вас, вы не хотите читать « и строка 2 », а только « строка 2 "):

echo "line 1 and line 2" | awk -v separator="and " 'BEGIN {FS=separator} $0 ~ separator {printf "%s\n%s", $1,$2}'
15
13.04.2017, 03:57
6 ответов

-o password_stdin , похоже, не работает на всех системах, например на freeBSD. и т.д.

Вы также можете использовать интерпретатор expect , он должен работать с sshfs и должен делать свое дело.

Другим решением может быть sshpass , например, допустим, вы выполняете резервное копирование каталога / var / www

Резервное копирование:

name=$(date '+%y-%m-%d')
mkdir /backup/$name && tar -czvf /backup/$name/"$name.tar.gz" /var/www

загрузка файла резервной копии на сервер резервного копирования

sshpass -p "your_password" scp -r backup_user@target_ip:/home/ /backup/$name

Так что он будет загрузить каталог с сегодняшней резервной копией

Но все же, как было сказано выше, лучшим (безопасным и простым) способом было бы использовать пару ключей ssh ​​
Единственное неудобство было бы, если бы вам нужно было пройти процесс генерации ключа один раз на каждом сервере, который вам нужно соединить, но это лучше, чем хранить пароль в текстовом формате на всех серверах, для которых вы хотите создать резервную копию :),

Генерация ключа Правильное соединение

  • На локальном сервере

     ssh-keygen -t rsa 
     
  • На удаленном сервере

     ssh root @ remote_servers_ip "mkdir -p.ssh "
     
  • Загрузка сгенерированных открытых ключей на удаленный сервер

     cat ~ / .ssh / id_rsa.pub | ssh root @ remote_servers_ip" cat >> ~ / .ssh / authorized_keys "{{1} } 
  • Установить разрешения на удаленном сервере

     ssh root @ remote_servers_ip "chmod 700 ~ / .ssh; chmod 640 ~ / .ssh / authorized_keys "
     
  • Login

     ssh root @ remote_servers_ip 
     
  • Включение протокола SSH v2

    раскомментируйте" Протокол 2 "в / etc / ssh / sshd_config

  • включение авторизации с открытым ключом в sshd

    раскомментируйте «PubkeyAuthentication yes» в / etc / ssh / sshd_config

  • Если для параметра StrictModes задано значение yes в / etc / ssh / sshd_config, тогда

     restorecon -Rv ~ /.ssh
    
16
27.01.2020, 19:49

Согласно руководству, есть опция -o password_stdin , которая может позволить прочитать пароль со стандартного ввода, что, вероятно, может быть перенаправлением. Я никогда им не пользовался, поэтому спекулирую.

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

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

14
27.01.2020, 19:49
echo 'password' | sshfs user@host:/dir /mnt -o password_stdin

Параметр "-o password_stdin" позволяет передать пароль по конвейеру.

При этом лучше использовать ключи, если только ваш поставщик услуг не разрешает использовать их для sftp. (Это один из заметных провалов WP Engine.)

10
27.01.2020, 19:49

una cosa a tener en cuenta es que si está utilizando la opción -o password_stdin, puede parecer que no funciona porque sshfs le preguntará si desea conectarse al host o no (si es la primera vez que conéctese a él y aún no se agrega al archivo de hosts conocidos ). Si lo está ejecutando en un lote, nunca verá sshfs preguntando. Las soluciones para evitar esto son:

  1. agregue la opción -o StrictHostKeyChecking=noa sshfs o
  2. ejecute sshfs manualmente una vez para agregar el host al archivo de hosts conocidos
6
27.01.2020, 19:49

Отправка 'sshfs password'с<<<на -o password_stdinработает в Bash:

sshfs -o password_stdin backup_user@target_ip:/home /mnt/backup <<< 'sshfs password'

Обратите внимание, что пароль заключен в одинарные кавычки. Спасибо Кайл!

23
27.01.2020, 19:49

Автоматический скрипт для подключения sftp к sshfs

#!/bin/bash
expect <<END
spawn sshfs sftpuser@ip:/folder /mnt/folder -p 22 -o password_stdin
send "password\r"
expect eof
END
1
29.01.2020, 12:25

Теги

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