Linux - Trabalhando com Arquivos de Forma Segura
Cópia Segura de Arquivos e scp
O comando scp
é usado para a cópia segura de arquivos. Seu princípio de funcionamento é semelhante ao comando cp
, com a diferença de que para scp
é necessário um caminho completo de rede, incluindo os nomes do host e do arquivo que precisam ser copiados. Além disso, se o nome de usuário do host for diferente do nome de usuário no cliente, o cliente também deve especificar o nome de usuário.
A cópia de um cliente para um host é feita da seguinte forma:
scp clientfile host:/hostfile
Este comando copia o arquivo clientfile
do computador cliente para o computador host com o endereço "host", no caminho hostfile
.
Vale notar que antes de usar o comando scp
, NÃO é necessário chamar o comando ssh
.
Por exemplo:
programicio@Programicio:~$ scp ~/Documents/hello.txt 192.168.0.116:/home/programicio/Documents/client.txt programicio@192.168.0.116's password: hello.txt 100% 1572 132.9KB/s 00:00 programicio@Programicio:~$
Aqui, eu copio do meu computador o arquivo ~/Documents/hello.txt
para o host com o endereço 192.168.0.116
. E esse arquivo é salvo no caminho /home/programicio/Documents/client.txt
.
Se o login do host for diferente do login do cliente, o endereço do host deve incluir o nome de usuário no host:
scp ~/Documents/hello.txt programicio@192.168.0.116:/home/programicio/Documents/client.txt
A cópia reversa, do host para o cliente, é feita assim:
scp host:/hostfile clientfile
Aqui, o arquivo hostfile
do computador host é copiado para o computador cliente no caminho clientfile
.
Por exemplo:
programicio@Programicio:~$ scp 192.168.0.116:/home/programicio/Documents/client.txt ~/Documents/hello2.txt programicio@192.168.0.116's password: client.txt 100% 1572 78.8KB/s 00:00 programicio@Programicio:~$
Neste caso, o arquivo /home/programicio/Documents/client.txt
é copiado do host com o endereço 192.168.0.116
para o computador cliente no caminho ~/Documents/hello2.txt
.
Outra funcionalidade importante do comando scp
é a opção -r
, que permite copiar toda a estrutura de subdiretórios.
sftp: FTP Seguro
O comando sftp
também é utilizado para copiar arquivos, mas estabelece uma sessão FTP segura entre os computadores. O sftp
aceita uma série de comandos como argumento, cada um indicando uma ação específica. Os principais são:
put
: copia um arquivo do computador atual para outro.mput
: copia vários arquivos do computador atual para outro.get
: copia um arquivo de outro computador para o atual.mget
: copia vários arquivos de outro computador para o atual.
O comando sftp
pressupõe que uma conexão SSH já esteja estabelecida entre os dois computadores. Antes de iniciar uma sessão FTP com outro computador, use o comando cd
no computador local para navegar até o diretório de onde ou para onde os arquivos devem ser copiados. Ao usar os comandos put
, mput
, get
e mget
para transferir arquivos, este diretório será considerado o diretório local padrão. Para estabelecer uma sessão sftp
com o computador no endereço 192.168.0.116
, use o seguinte comando:
sftp host
Neste caso, presume-se que o nome de usuário no cliente e no host são os mesmos. Se o nome de usuário no host for diferente, ele deve ser especificado antes do símbolo @
:
sftp programicio@host
Por exemplo:
programicio@Programicio:~$ sftp 192.168.0.116 programicio@192.168.0.116's password: Connected to 192.168.0.116. sftp>
Após isso, você verá o prompt do sftp
e estará no diretório raiz do host remoto. Aqui, você pode usar comandos Linux padrão, como ls
para listar arquivos, ou cd
para mudar de diretório:
programicio@Programicio:~$ sftp 192.168.0.116 programicio@192.168.0.116's password: Connected to 192.168.0.116. sftp> ls -l drwxrwxr-x 3 programicio programicio 4096 Feb 18 16:47 Android drwxr-xr-x 2 programicio programicio 4096 Mar 20 13:33 Desktop drwxr-xr-x 2 programicio programicio 4096 Mar 20 13:42 Documents drwxr-xr-x 2 programicio programicio 4096 Mar 20 13:33 Downloads drwxr-xr-x 2 programicio programicio 4096 Mar 20 13:33 Music drwxrwxr-x 3 programicio programicio 4096 Dec 6 2022 Pictures drwxr-xr-x 2 programicio programicio 4096 Mar 20 13:33 Public drwxr-xr-x 2 programicio programicio 4096 Mar 20 13:33 Templates drwxr-xr-x 2 programicio programicio 4096 Mar 20 13:33 Videos drwx------ 8 programicio programicio 4096 Feb 19 22:49 snap sftp>
A partir desse ponto, é possível transferir arquivos entre os dois computadores. Por exemplo, o comando a seguir usa sftp
para copiar o arquivo Documents/client.txt
do host remoto para o diretório atual no computador cliente local:
sftp> get Documents/client.txt Fetching /home/programicio/Documents/client.txt to client.txt client.txt 100% 1572 173.4KB/s 00:00 sftp>
Da mesma forma, o comando put
permite transferir arquivos do computador cliente para o host:
sftp> cd Documents sftp> pwd Remote working directory: /home/programicio/Documents sftp> put Documents/hello.txt Uploading Documents/hello.txt to /home/programicio/Documents/hello.txt hello.txt 100% 1572 187.5KB/s 00:00 sftp>
Aqui, primeiramente eu navego no host para a pasta Documents
(considerando que, por padrão, estou no diretório home). Este é o diretório onde o arquivo copiado do meu computador será salvo. Em seguida, uso o comando put
para transferir o arquivo Documents/hello.txt
do meu computador para o host. Como, ao iniciar a conexão sftp
, eu estava no meu diretório home no meu computador, o comando put
buscará o arquivo relativo a esse diretório.
Após concluir a transferência de arquivos, é usado o comando quit
ou exit
para encerrar a sessão sftp
:
sftp> exit