Wie können Sie mit sftp einen Einzeiler erstellen, um sich mit dem Passwort in derselben Zeile anzumelden?

16

Gibt es eine Möglichkeit, das Passwort auch mit sftp in die Zeile zu setzen?

linux~ $ sftp [email protected]:/DIRECTORY_TO_GO_TO/ 

So was

linux~ $ sftp [email protected]:/DIRECTORY_TO_GO_TO/ -p PASSWORD? 
Daniel
quelle

Antworten:

13

Im Allgemeinen wird das Einfügen eines Kennworts in eine Befehlszeile als Sicherheitsrisiko angesehen, da es allen anderen Benutzern angezeigt wird, die ps / top ausführen können, und möglicherweise im Verlauf Ihrer Shell gespeichert wird.

Wenn Sie in der Lage sind, sollten Sie eine schlüsselbasierte Authentifizierung einrichten.

Ich glaube auch nicht, dass es mit sftp möglich sein wird. Es soll für sichere Überweisungen verwendet werden. Wenn Sie wirklich so etwas tun mussten und keine andere Wahl haben, müssen Sie sich wahrscheinlich mit der Automatisierung befassen .

Zoredache
quelle
Interessanter Punkt!
Daniel
Wenn Sie in der Lage sind, sollten Sie eine schlüsselbasierte Authentifizierung einrichten. Das macht Sinn.
Net Runner
Diese erwartete URL ist kaputt
André Perazzi
4
Ich kann nicht verstehen, warum Leute eine Antwort positiv bewerten, die keine Lösung bietet.
Itoctopus
33

Wie bereits erwähnt, sollte ein Befehlszeilenpasswort der letzte Ausweg sein.

Wenn jedoch nichts anderes möglich ist; man kann ssh pass anstreben

sshpass -p <password> sftp user@host
Yogesh Nachnani
quelle
2
Dies sollte massiv unterstützt werden. Es ist wirklich nützlich, sshpass zu haben. Bei einigen Anbietern können Sie keinen .ssh-Ordner erstellen, und scp ist ebenfalls nicht zulässig.
NetSquirrel
2
Gut, dass einige Tools Ihren Rücken haben: brew search sshpass- "Wir werden sshpass nicht hinzufügen, weil es für unerfahrene SSH-Benutzer zu einfach ist, die Sicherheit von SSH zu ruinieren."
Oliver
4
Dies sollte die akzeptierte Lösung sein. Das OP fragte, wie genau dies zu tun sei - nicht für Sicherheitsratschläge (wenn auch mit guten Absichten und korrekt).
8.
6

Tun Sie das nicht - richten Sie die SSH-Authentifizierung mit öffentlichem Schlüssel für die automatische Anmeldung ein.

MikeyB
quelle
Kann sftp das genauso machen wie scp?
Daniel
1
@Daniel, sowohl sftp als auch scp basieren auf SSH, was eine schlüsselbasierte Authentifizierung ermöglicht.
Zoredache
5

Verwenden Sie einfach Perl, Ruby oder Python, um das zu skripten, was Sie versuchen. Im Falle von Ruby ist es nur (aus den net-sftp API-Dokumenten entnommen):

require 'net/sftp'

Net::SFTP.start('host', 'username', :password => 'password') do |sftp|

  # upload a file or directory to the remote host

  sftp.upload!("/path/to/local", "/path/to/remote")

end

Weitere Informationen finden Sie unter http://net-ssh.rubyforge.org/sftp/v2/api/index.html

Monomythos
quelle
paramiko ist reine python (keine extra libs) und funktioniert wirklich gut
qwertzguy
3

Verwenden Sie, wie in den anderen Antworten angegeben, die Authentifizierung mit öffentlichem Schlüssel. Es gibt eine großartige, wenn auch etwas veraltete IBM developerWorks-Reihe , in der alles erklärt wird, was Sie darüber wissen möchten, sowie einige nützliche Zusatztools wie Schlüsselbund.

rvf
quelle
2

Für Suchende, denen es egal ist, dass das Kennwort im Befehlszeilenbefehl angezeigt wird:

sftp userid:password@remoteHostSo fügen Sie das Kennwort in den sftpBefehl connect ein.

UPDATE: dies stellte sich als falsch heraus ... siehe Kommentare

ashnazg
quelle
OpenSSH v5.3p1 und v4.3p2, beide auf Red Hat Enterprise ...
ashnazg
1
Dies stellte sich als falsch heraus. Diese Methode schien für mich zu funktionieren, da PHP und seine ssh2-Erweiterung früher in meinem Code verwendet wurden, um die eigentliche Standalone-Authentifizierung durchzuführen. Der Befehl sftp wurde später ausgeführt. In diesem späteren Stück schien die Syntax erfolgreich zu sein.
Ashnazg
1
Hostname Benutzer konnte nicht aufgelöst werden: Es ist kein solcher Host bekannt. Es wird ":" in Benutzername berücksichtigt, was in FileZilla CLI
P Satish Patro
1

Ich vermute, dass es so viele Antworten gibt wie FTP-Clients. Ein SFTP-Server sollte erst dann Authentifizierungsinformationen akzeptieren, wenn die Verschlüsselung eingerichtet ist, damit Benutzer und Kennwort geschützt sind.

Ich glaube, dass der FileZilla- Client die Befehlszeilenübergabe des Benutzers und des Kennworts ermöglicht. Siehe die Dokumentation hier . Angesichts des guten Rufs des FileZilla-Projekts würde ich erwarten, dass es sicher funktioniert.

tomjedrz
quelle