[2] SCP – Secure Copy (CentOS)

20 maja 2020 Wyłączono przez Adam [zicherka] Nogły

Jest możliwe kopiowanie plików za pomocą SSH.

Materiał ten dotyczy systemu CentOS, jednak jeśli posiadasz Windows 10 w wersji 1803 lub nowszej to możesz zrobić dokładnie to samo. Klient OpenSSH jest wbudowany w Windowsa i komendy [scp] i [sftp] sa obsługiwane czy to w PowerShell’u czy też w linii poleceń.

Oczywiście wszędzie można zastosować nazwy hostów zamiast adresów IP – jeśli tylko są one rozpoznawane (DNS i/lub hosts).

[1] Użycie SCP (Secure Copy).

# komenda: scp [opcje] źródło cel
# skopiujmy [test.txt] z lokalnego komputera na zdalny [192.168.1.2]
[user@lsr02vm ~]$ scp ./test.txt user@192.168.1.2:~/
The authenticity of host '192.168.1.2 (192.168.1.2)' can't be established.
ECDSA key fingerprint is SHA256:Hl4rQQm8qarfgHkyIg523zKY1i5cexAVZYkdcswuXwk.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes # potwierdzamy odcisk przy pierwszym połączeniu
Warning: Permanently added '192.168.1.2' (ECDSA) to the list of known hosts.
user@192.168.1.2's password: # wpisujemy hasło
test.txt                                                                             100%   52   105.9KB/s   00:00
# skpiujemy [/home/user/test.txt] na zdalnym komputerze [192.168.1.2] na lokalny
[user@lsr02vm ~]$ scp user@192.168.1.3:/home/user/test.txt ./test2.txt
user@192.168.1.3's password: # wpisujemy haslo
test.txt                                                                             100%   52     0.7KB/s   00:00
[user@lsr02vm ~]$

[2] Teraz pokaże jak zrobić to samo za pomocą SFTP (SSH File Transfer Protocol). SFTP jest włączone domyślnie w CentOS, jeśli jednak by nie było to dodaj linię:

 [Subsystem sftp /usr/libexec/openssh/sftp-server]

w pliku

[/etc/ssh/sshd_config]
# komenda: sftp [opcje] [user@host]
[user@lsr01vm ~]$ sftp cent@192.168.1.3
cent@192.168.1.3's password: # wpisujemy hasło
Connected to cent@192.168.1.3.
# katalog roboczy na zdalnym hoście
sftp> pwd
Remote working directory: /home/cent
# katalog roboczy na lokalnym hoście
sftp> !pwd
/home/user
# pliki na zdalnym hoście
sftp> ls -l
-rw-rw-r--    1 cent     cent            0 May 24 12:43 cent.txt
# pliki na lokalnym hoście
sftp> !ls -l
razem 0
-rw-rw-r--. 1 user user 0 05-24 12:43 user.txt
# przesyłamy plik na zdalny komputer
sftp> put user.txt user-copy.txt
Uploading user.txt to /home/cent/user-copy.txt
user.txt                                                                             100%    0     0.0KB/s   00:00
sftp> ls -l
-rw-rw-r--    1 cent     cent            0 May 24 12:43 cent.txt
-rw-rw-r--    1 cent     cent            0 May 24 12:45 user-copy.txt
# pobieramy plik ze zdalnego komputera
sftp> get cent.txt cent-copy.txt
Fetching /home/cent/cent.txt to cent-copy.txt
sftp> !ls -l
razem 0
-rw-rw-r--. 1 user user 0 05-24 12:45 cent-copy.txt
-rw-rw-r--. 1 user user 0 05-24 12:43 user.txt
# tworzymy katalog na zdalnym komputerze
sftp> mkdir testdir
sftp> ls -l
-rw-rw-r--    1 cent     cent            0 May 24 12:43 cent.txt
drwxrwxr-x    2 cent     cent            6 May 24 12:46 testdir
-rw-rw-r--    1 cent     cent            0 May 24 12:45 user-copy.txt
# kasujemy katalog na zdalnym komputerze
sftp> rmdir testdir
sftp> ls -l
-rw-rw-r--    1 cent     cent            0 May 24 12:43 cent.txt
-rw-rw-r--    1 cent     cent            0 May 24 12:45 user-copy.txt
# wykonujemy komendę na lokalnym komputerze
sftp> !hostname
lsr01vm.zicher.lab
# wychodzimy z sftp
sftp> quit
[user@lsr01vm ~]$