Sshfs সহ কমান্ড লাইনে ব্যবহারকারীর নাম এবং পাসওয়ার্ড


15

আমি এটি ব্যবহার করে একটি ছোট ব্যাকআপ স্ক্রিপ্ট তৈরি করছি sshfs:

sshfs backup_user@target_ip:/home /mnt/backup

এই কমান্ডে পাসওয়ার্ড অন্তর্ভুক্ত করার কোনও উপায় আছে কি?

অথবা এফটিপি / এসএফটিপি বাদে লগইন পাসওয়ার্ড অন্তর্ভুক্ত করা যায় এমন অন্য কোনও ফাইল স্থানান্তর সমাধান রয়েছে?


4
আপনি আরএসএ কী জুড়ি তৈরি করতে ssh-gkeygen ব্যবহার করতে পারেন তারপরে আরএসএ প্রমাণীকরণ ব্যবহার করতে ssh (ক্লায়েন্ট এবং সার্ভার) কনফিগার করুন। "নিয়মিত" ssh প্রমাণীকরণের জন্য আপনি কি আগে এটি করেছেন?
এয়ারহফফ

হ্যাঁ কিন্তু তারপর আমি পথ সার্ভার ssh -র মাধ্যমে সংযোগ করা হয় পরিবর্তন করতে হবে .. যতটা আমি প্রমাণীকরণ কী ভিত্তি করে করা করতে পারেন অথবা লগইন / পাসওয়ার্ড একই সময়ে উভয় না .. জানি
জাজা

2
তারা উভয় হতে পারে। তারা সাধারণত হয়। এইভাবে, একটি নতুন তৈরি ব্যবহারকারী তাদের পাসওয়ার্ড প্রবেশ করে সার্ভারের কীগুলি টিপতে পারেন। পরবর্তীকালে, তারা তাদের কীটি ব্যবহার করে।
xhienne

উত্তর:


11

-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"
    
  • রিমোট সার্ভারে অনুমতি সেট করুন

    ssh root@remote_servers_ip "chmod 700 ~/.ssh; chmod 640 ~/.ssh/authorized_keys"
    
  • প্রবেশ করুন

    ssh root@remote_servers_ip
    
  • এসএসএইচ প্রোটোকল ভি 2 সক্ষম করা

    / etc / ssh / sshd_config এ uncomment "প্রোটোকল 2"

  • sshd- এ পাবলিক কী অনুমোদন সক্ষম করা

    uncomment "PubkeyAuthentication হ্যাঁ" ইন / ইত্যাদি / ssh / sshd_config

  • যদি স্ট্রাইকডমোডগুলি হ্যাঁ সেট করা থাকে তবে / etc / ssh / sshd_config

    restorecon -Rv ~/.ssh
    

14

ম্যানুয়াল অনুসারে, এমন একটি বিকল্প রয়েছে -o password_stdinযা মানক ইনপুট থেকে পাসওয়ার্ডটি পড়তে দেয় যা সম্ভবত পুনঃনির্দেশ হতে পারে। আমি এটি কখনও ব্যবহার করি নি, তাই অনুমান করছি।

এটি বলেছিল, আমি এমন একটি সমাধানের বিরুদ্ধে দৃ strongly়ভাবে পরামর্শ দিচ্ছি যা অন্তর্নিহিত অনিরাপদ।

sshপ্রাইভেট / পাবলিক কীগুলির সিস্টেমের সাথে খুব ভাল কাজ করে। এটি সহজ এবং সুরক্ষিত। কোনও শেল স্ক্রিপ্টে একটি পাসওয়ার্ড প্রবেশ করানো বা পরিষ্কার করে লিখতে হবে না। সার্ভারে আপনার সর্বজনীন কীটি চাপুন এবং আপনি তত্ক্ষণাত সংযোগ করতে পারেন।


কেউ কি এই সমাধানের একটি কার্যকরী উদাহরণ প্রদান করতে পারেন? আমি নিম্নলিখিত চেষ্টা করছি, কিন্তু এটি কাজ করছে না:printf "my_password\n" | sshfs username@hostname:/remote_fs $HOME/local_dir
মাইকি ই

এফওয়াইআই, আমার উল্লেখ করা উচিত ছিল আমি একটি পাসওয়ার্ড সুরক্ষিত এসএসএইচ কী ব্যবহার করছি। @ নাথন-এস-ওয়াটসন-হাই এখানে পাওয়া উত্তরটি ব্যবহার করে আমি এটির কাজটি করতে সক্ষম হয়েছি: unix.stackexchange.com/questions/128974/…
মাইকি

আমার হাতে কোনও মিলের মতো পরিবেশ নেই যা আমাকে একটি পাসওয়ার্ড সুরক্ষিত এসএসএইচ কী দিয়ে একটি এসএসএফএস-মাউন্ট পরীক্ষা করতে দেয়। যাইহোক, আপনার আদেশে প্রথমে আমাকে যে আঘাত করেছে তা হ'ল আমি কোনও -o password_stdinবিকল্প দেখছি না ।
xhienne

ইনপুট জন্য ধন্যবাদ। আমি এখনই নীচের কমান্ডটি চেষ্টা করেছি এবং এটি একটি পাসওয়ার্ড চাইবে না, তবে এটি ফিরেও আসে না। অর্থ, এটি কেবল কমান্ডটি শেষ হওয়ার অপেক্ষায় বসে আছে, কোনও কমান্ড প্রম্পট প্রদর্শিত হবে না। আমি কমান্ডটি চেষ্টা করেছিলাম: printf "my_password\n" | sshfs -o password_stdin user@hostname:/ $HOME/local_dir পিএস আমি sshfs -o password_stdin user@hostname:/ $HOME/local_dir
দেবিয়ান

11

বংশীধ্বনিতুল্য "sshfs password"সঙ্গে <<<থেকে -o password_stdinব্যাশ উপর কাজ করে:

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

4
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত .. যে কোনও লিনাক্স ওএসে কাজ করে।
আর্গন

সুতরাং, systemd সহ স্বয়ংক্রিয়ভাবে মাউন্ট করার জন্য ফাইলটি mnt-media.mount এ কীভাবে রাখবেন?
জোও জোসে

একটি সুপার মাইনর মন্তব্য: আপনার পাসওয়ার্ডে যদি এতে বিশেষ BASH অক্ষর থাকে (যেমন একটি ঠুং শব্দ (!)), তবে আপনার পাসওয়ার্ডের জন্য ডাবল কোটের পরিবর্তে একক উদ্ধৃতি ব্যবহার করা উচিত।
কাইল চেলিস

5
echo 'password' | sshfs user@host:/dir /mnt -o password_stdin

"-O পাসওয়ার্ড_স্টদিন" বিকল্পটি আপনাকে আপনার পাসওয়ার্ডটি পাইপ করতে সক্ষম করে।

এটি বলেছে, কীগুলি একটি ভাল বিকল্প, যদি না আপনার পরিষেবা প্রদানকারী আপনাকে সেগুলি এসএফটিপি ব্যবহার করতে না দেয়। (এটি ডাব্লুপি ইঞ্জিনের একটি উল্লেখযোগ্য ব্যর্থতা))


আপনি দয়া করে আপনার উত্তর পরিষ্কার করতে পারেন? কোডের একটি মাত্র লাইন এসইতে উত্তরের উত্তর হিসাবে গণনা করে না
রোমিও নিনভ

@ রোমিওভিনোভ আমি বলব যে এই পোস্টটি প্রশ্নের যথেষ্ট উত্তর দেয়। প্রত্যেকে কেন স্পষ্টত স্পষ্ট তা ব্যাখ্যা করে কোনও উপন্যাস লেখার দিকে ঝুঁকছে না।
স্যাটাস কাতসুরা

@ স্যাটোক্যাটসুর ধন্যবাদ যদিও আমি চ্যালেঞ্জের মুখোমুখি।
ইয়াতেডোনুট

2

মাউন্ট স্ক্রিপ্ট:

#!/bin/bash
server=<host>
user=<username>
pass=<password>
root=<hostpath>
mount=$(pwd)/sshfs

type sshfs >/dev/null 2>&1 || { echo >&2 "sshfs required"; exit 1; }
type sshpass >/dev/null 2>&1 || { echo >&2 "sshpass required"; exit 1; }

mkdir -p $mount

SSHPASS="$pass" sshfs $server:$root $mount -o ssh_command="sshpass -e ssh -l $user"

আনমাউন্ট:

#!/bin/bash

mount=$(pwd)/sshfs

fusermount -u $mount

1

একটি বিষয় মনে রাখবেন যে আপনি যদি -o password_stdinবিকল্পটি ব্যবহার করছেন তবে এটি কাজ করছে না বলে মনে হচ্ছে কারণ sshfs হোস্টের সাথে সংযোগ স্থাপন করবে কিনা তা জিজ্ঞাসা করবে (যদি আপনি এটির সাথে প্রথমবার সংযোগ স্থাপন করেন এবং এটি যুক্ত না হয়) এখনও পরিচিত হোস্ট ফাইলটিতে)। আপনি যদি এটি একটি ব্যাচে চালাচ্ছেন তবে আপনি কখনই এসএসএফ জিজ্ঞাসা করতে পারবেন না। এটি এড়াতে কর্মক্ষেত্রগুলি হ'ল:

  1. যোগ -o StrictHostKeyChecking=nosshfs করার বিকল্প বা
  2. হোস্টগুলি পরিচিত হোস্ট ফাইলে যোগ করতে একবারে sshfs চালান

0

Sshfs এর সাথে sftp সংযোগ করতে স্বয়ংক্রিয় স্ক্রিপ্ট

#!/bin/bash
expect <<END
spawn sshfs sftpuser@ip:/folder /mnt/folder -p 22 -o password_stdin
send "password\r"
expect eof
END
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.