cs:navody:sftp:start

SFTP

V Linuxu je možné použít pro kopírování dat mezi lokální stanicí a serverem na příkazové řádce program sftp, který se chová stejně jako řádkový ftp-klient, avšak přes protokol ssh.

Protokol SFTP má problémy s hardlinky. Pokud je chcete využívat, tak doporučujeme použít NFS, rsync nebo SCP.

Připojení na server provedeme příkazem:

sftp uzivatel@server
Aktuální IPv4 adresy serverů (hostů) pro jednotlivá datacentra:
Jihlava ssh.du2.cesnet.cz
Brno ssh.du3.cesnet.cz
Ostrava ssh.du4.cesnet.cz
Jihlava ssh.du5.cesnet.cz
Aktuální IPv6 adresy serverů (hostů) pro jednotlivá datacentra:
Jihlava ssh6.du2.cesnet.cz
Brno ssh6.du3.cesnet.cz
Ostrava ssh6.du4.cesnet.cz
Služby na IPv6 jsou provozovány v pilotním režimu.

Pro ověření serveru slouží DSA, RSA nebo ECDSA klíče. Ty jsou pro všechny servery v daném datacentru stejné.

Jihlavské úložiště (du2):

RSA (du2) 10:c0:8a:25:6b:b9:54:39:93:40:42:80:4a:c2:eb:bf
DSA (du2) 3c:2a:d0:09:30:5c:72:a2:39:23:70:6e:4d:c5:0f:47

Brněnské úložiště (du3):

RSA (du3) 6b:f8:2b:ab:bf:31:91:03:bf:0d:53:5d:a3:ba:7e:c0
DSA (du3) 34:3c:c6:47:96:dc:aa:ab:2d:2d:80:db:1b:80:ea:14

Ostravské úložiště (du4):

RSA, MD5 (du4) 51:d9:97:53:51:f3:3a:d5:34:06:2d:f7:dd:c8:25:a3
RSA, SHA256 (du4) LP7QxtJN257nb4gI8JutEwbrplx+MwdrwBtkhovQl+U
ECDSA, MD5 (du4) 23:f8:17:39:9e:18:4e:dc:bb:4a:b6:04:1c:f5:74:de
ECDSA, SHA256 (du4) 9YvWE2h459dMcLWcLcD1DsrxTjqqMLD16eiSYXBVX9k

Jihlavské úložiště (du5):

RSA, MD5 (du5) 4f:b3:b2:31:aa:30:f1:6f:bc:58:4f:2d:39:e7:85:26
RSA, SHA256 (du5) lIJzpmmnnCQReVAaVom/jkZ1hUNWe/4nnbAl58liJbI
ECDSA, MD5 (du5) d1:72:10:45:5b:3b:ac:c6:ae:e8:32:3b:1c:c3:3e:69
ECDSA, SHA256 (du5) YB7YnmuMktwsFxVe5qdzy2bLU9y+0yowEcpZp82P4nk

V případě, že libovolný klíč nesouhlasí, přerušte připojování na server a kontaktujte nás prosím na: support(zavináč)cesnet.cz

Po odeslání příkazu se zobrazí výzva na zadání hesla.

Po úspěšném přihlášení se zobrazí sftp-prompt očekávající příkazy - seznam dostupných příkazů lze vylistovat odesláním příkazu

?

nebo

help

Příkaz „ls“ - vylistuje aktuální adresář na serveru.

sftp> ls
aaa                                  vsftpd-2.3.5-1.0.0.x86_64.rpm

Příkaz „put soubor“ - zkopíruje soubor z lokálního systému na sftp-server

sftp> put /tmp/vsftpd-2.3.5-1.0.0.x86_64.rpm
Uploading /tmp/vsftpd-2.3.5-1.0.0.x86_64.rpm to /VO_storage/home/uzivatel/vsftpd-2.3.5-1.0.0.x86_64.rpm
/tmp/vsftpd-2.3.5-1.0.0.x86_64.rpm                                                                                   100%  246KB 123.0KB/s   00:02    

Příkaz „get soubor“ - zkopíruje soubor z sftp-serveru do lokálního systému

Příkaz get bez parametru zkopíruje soubor na místo, odkud jsme se z lokálního systému na sftp-server připojovali.

sftp> get vsftpd-2.3.5-1.0.0.x86_64.rpm
Fetching /VO_storage/home/uzivatel/vsftpd-2.3.5-1.0.0.x86_64.rpm to vsftpd-2.3.5-1.0.0.x86_64.rpm
/VO_storage/home/kopecky/vsftpd-2.3.5-1.0.0.x86_64.rpm                                                               100%  246KB 246.1KB/s   00:01    

Přidáním parametru za stahovaný soubor řekneme přesné umístění, kam se má soubor v lokálním systému uložit.

sftp> get vsftpd-2.3.5-1.0.0.x86_64.rpm /tmp/
Fetching /VO_storage/home/uzivatel/vsftpd-2.3.5-1.0.0.x86_64.rpm to /tmp/vsftpd-2.3.5-1.0.0.x86_64.rpm
/VO_storage/home/uzivatel/vsftpd-2.3.5-1.0.0.x86_64.rpm                                                               100%  246KB 246.1KB/s   00:00    

Při práci s adresářem je nutné přidat parametr „-r“.

sftp> get -r aaa /tmp/
Fetching /VO_storage/home/uzivatel/aaa/ to /tmp/aaa
Retrieving /VO_storage/home/uzivatel/aaa

Uživatel je přihlašovací jméno uživatele a server je název serveru, na kterém má tento uživatel svůj sdílený prostor - tyto informace byly sděleny při registraci datového úložiště.

Optimalizace rychlosti

SSH které rsync a sftp používá se chová tak, že vytvoří pro každé SSH spojení nový socket. Je však možné vytvořit perzistentní socket, přes které všechny tyto spojení jdou. Výsledkem je určitý speed-up. Zrychlení bude tím větší, čím větší bude počet souborů.

Přidáme do souboru ~/.ssh/config následující

Host host
ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster no

'host' je doménové jmné serveru, kam budeme data přenášet.

Perzistentní připojení se vytváří pomocí příkazu

ssh -MNf username@server

Toto spojení běží na pozadí a nyní již můžeme použít rsync nebo sftp klasickým způsobem.

Poslední úprava: 01.11.2015 13:25