Montag, Februar 22, 2010

sftp und ftps

Für ftp gibt es zwei abgesicherte Varianten. Die Details stehen in Wikipedia.
1. 1und1 unterstützt SFTP. Dabei wird nur die Authentifizierung über SSH abgewickelt, der Rest der Übertragung bleibt unverschlüsselt. Im .Net Framework gibt es keine direkte SFTP Untersützung.
2. Unter Windows findet sich die Klasse [System.Net.FtpWebRequest] welche mit der Property .EnableSsl=true auch FTPS unterstützt. Es wird die gesamte ftp Verbindung verschlüsselt. Diese Version wird nicht von 1und1 unterstützt.
3. Zur Kommunikation mit 1und1 muss man passives ftp einsetzen. Das kann der Standard Windows ftp Client nicht. Alternativ einsetzbar sind z.B.: winscp.com von  winscp.net oder ftps.com von www.stdnet.com/moveit.

Mit winscp.com und Powershell kann man Daten zu 1und1 halbwegs sicher per sftp übertragen:

#passwort und username sollten mit Encryption und secure-string im Script stehen
$Source="$Env:tmp\daten.txt"
$ProcPar=new-object System.Diagnostics.ProcessStartInfo
$ProcPar.FileName="C:\programme\WinSCP\winscp.com"
$ProcPar.Arguments="/passive"
$ProcPar.UseShellExecute=$false
$ProcPar.RedirectStandardInput=$true
$ProcPar.RedirectStandardOutput=$true
$ProcPar.CreateNoWindow=$true
$Proc=[diagnostics.process]::start($ProcPar)
$Proc.StandardInput.WriteLine("option batch abort")
$Proc.StandardInput.WriteLine("option confirm off")

$Open="open sftp://"+ $username +":" + $password + "@ftpserver.dom"
$Proc.StandardInput.WriteLine($Open)
$Proc.StandardInput.WriteLine("put $Source /public/")
$Proc.StandardInput.WriteLine("close")
$Proc.close()
$Proc=$null

Keine Kommentare: