
Ich möchte per SSH auf einen Remotecomputer zugreifen, aber anstatt das Kennwort einzugeben, möchte ich es von einer anderen Datei umleiten.
Ich habe also eine Datei password.txt
, in der das Kennwort gespeichert ist. File.sh
ist meine Bash-Datei.
InFile.sh
#!/bin/bash
ssh -T [email protected]
Während ich die Datei ausführte, habe ich Folgendes getan:
./File.sh < password.txt
Ich wurde jedoch trotzdem aufgefordert, das Passwort einzugeben.
Wie erhalte ich das einzugebende Passwort aus der Datei?
Antwort1
SSH mit „Passwort in einer Datei“ wird häufig als Authentifizierung mit öffentlichem Schlüssel verwendet. Erstellen Sie ein Schlüsselpaar mit und ssh-keygen
laden Sie den öffentlichen Schlüssel auf den anderen Host hoch:
scp ./.ssh/id_rsa.pub [email protected]:~/
und platzieren Sie es wie folgt ~/.ssh/authorized_keys
:
ssh [email protected]
mkdir ~/.ssh
mv ~/id_rsa.pub ~/.ssh/authorized_keys
oder, wenn eine authorized_keys
Datei bereits existiert:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
Stellen Sie die entsprechenden Berechtigungen ein (600 für die Datei, 700 für das Verzeichnis):
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
und starten Sie eine neue SSH-Sitzung.
Antwort2
Sie können sshpass
dazu Folgendes verwenden:
sshpass -f password.txt ssh -T [email protected]
Antwort3
#!/usr/bin/expect -f
spawn ssh shw@hostname
expect -exact "shw@hostname's password: "
send -- "PASSWORD\r"
expect "$ "
interact
Expect ist ein Tool zur Automatisierung des Prozesses.