ssh / scp komutunu bash betiğinden w / out password'den çalıştırın - anahtar takılı


0

Dosyaları aynı ağdaki iki rpi arasında kopyalamaya çalışıyorum. Genel anahtar, pek çok öğreticide istendiği gibi kuruldu. Terminalden doğrudan ssh veya scp komutunu çağırırken parola sorulmaz. Aynı komutu bir bash betiğinden çalıştırmak bir şifre ister.

Kafam karıştı, çünkü çoğu insan ssh / scp komutunu çalıştırma konusunda bir sorunla karşılaşıyor gibi görünüyor - ancak bu iyi çalışıyor. Bir terminal / bash farkı gibi görünüyor.

Komut Dosyası şöyle görünüyor:

senaryo:

#!/bin/bash

sudo scp /home/pi/file.txt pi@192.168.178.xx:/home/pi/foo/

Tarafından yürütülür

$sudo ./script

Yardımınız için teşekkür ederim!


4
Tam olarak bir bash betiğinden nasıl çalıştırıyorsunuz? ve senaryoyu nasıl çalıştırıyorsunuz? Lütfen soruyu düzenleyerek cevap verin.
Kamil Maciorowski

Kök hesabın genel anahtarını uzaktaki makineye kopyaladınız mı? sudo ssh-copy-id ...? Soruyorum çünkü senaryonuzu üzerinden çalıştırıyorsunuz sudo.
Daniel F

Yanıtlar:


0

Tüm derslerde sorun, farklı yöntemler izleyebilmeleridir. Normalde yaptığım şey şu.

Komut dosyanızı yürütmek için sudo kullandığınızdan (sorunun düzenlemesine göre), komut dosyanız kök olarak çalıştırılır. Kendi kullanıcı olarak değil.

Yani (içindedir kökünün kamu anahtarı eklemek gerektiği anlamına gelmektedir /root/.ssh/id_rsa.pubitibaren) strawberryiçinde authorized_keysde yaban mersini eşek `üzerindeki kökün!

İki Pi var varsayalım, en diyelim strawberryve blueberry. Strawberryssh istemcisi, blueberrysunucudur. oturum açmanızla değiştirilmelidir.

Açık strawberry:

cd
mkdir .ssh
chown <my name> .ssh
chmod 700 .ssh
ssh-keygen
cp .ssh/id_rsa.pub /tmp/nice_filename
sudo -s
cd ~root
mkdir .ssh
chown root .ssh
chmod 700 .ssh
ssh-keygen
cat .ssh/id_rsa.pub >> /tmp/nice_filename
chmod a+r /tmp/nice_filename
exit

scp /tmp/nice_filename blueberry: # and enter the password for blueberry

ssh-keygenşifre isteyebilir. Ortamınıza gerçekten tamamen güveniyorsanız, şifreyi boş bırakmayı seçebilirsiniz. Şifreyi boş bırakmazsanız, tuş kilidini açmak için bu şifreyi sağlamanız gerekir.

Normalde şifreyi boş bırakarak giriş yapıyorum.

Açık blueberry:

cd
mkdir .ssh
chown <my name>  .ssh
chmod 700 .ssh
cat nice_filename >> .ssh/authorized_keys
chown <my name>  .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
sudo -s
mkdir ~root/.ssh
chown root.root ~root/.ssh
chmod 700 ~root/.ssh
cat nice_filename >> ~root/.ssh/authorized_keys
chown root ~root/.ssh/authorized_keys
chmod 600 ~root/.ssh/authorized_keys

Bunun yerine, cat id_rsa.pub >> .ssh/authorized_keysolabilir mv id_rsa.pub .ssh/authorized_keys, ancak bunu yalnızca ilk anahtarınızsa veya mevcut anahtarları kaldırmak istiyorsanız yapmalısınız.

Sonraki strawberry:

ssh blueberry ls /tmp
ssh root@blueberry ls /usr
sudo ssh blueberry ls /var

ve voila!


Cevabınız için teşekkürler. bu yaptığım derslerden biriyle aynı görünüyor (birden çok denenmiş). Hepsinden sonra komut satırı üzerinden doğrudan ssh veya scp hatasız çalıştı. - sorun aynı bash betiği ile aynı satırları (scp) çalıştırmaya çalıştığım anda bir şifre soruluyor ...
JanM

Senaryonuzu nasıl başlatırsınız? Farklı bir kullanıcı altında? Anahtarların kilidini açmak için bir şifre mi yazdın?
Ljm Dullaart

@ LjmDullaart hepsi te aynı. Kök için varsayılan pi / pi combo dışında bir şifre kullanmadım ... hepsi boş kaldı
JanM

Böylelikle /root/.ssh drwx------ root rootyaban mersini üzerinde, içinde id_rsa.pubçileğin üstünde kök anahtarı olan bir anahtarın var authorized_keys -rw------- root root. Çilek üzerinde senaryonun açılışında kökün var. (sadece doğrulamak için). Bunu yapabilir misin grep PermitRootLogin /etc/ssh/sshd_config? (Eğer uçurumdan ssh yapabiliyorsanız, evet olmalı) ssh -v blueberryHerhangi bir ipucu veriyor mu?
Ljm Dullaart

Böylece, sorunuzun düzenlenişinden, aynı olmadığını görebiliyorum. Cevabınızı beklentilerinize uyacak şekilde düzenledim, ancak lütfen diğer cevabımı da inceleyin.
Ljm Dullaart

0

Kullanırken işleri berbat ediyorsun sudo. Neden kullandığınız sudobelli değil. Temel olarak, sadece yapmak istiyor gibisin:

senaryo:

#!/bin/bash
scp /home/pi/file.txt pi@192.168.178.xx:/home/pi/foo/

ve betiği

./script
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.