31.01.2025

Copiar arquivos e executar comandos por meio de SSH

A conexão com o servidor via SSH é um dos principais meios de gerenciar servidores *nix. Muitas vezes, é necessário fazer upload de um arquivo para um servidor remoto ou descarregá-lo, mas não há outro meio além da conexão SSH. Felizmente, uma das funções regulares desse protocolo é copiar arquivos por meio de uma conexão segura. Você pode implementá-lo usando um comando scp em sistemas Linux ou usando pscp.exe, que faz parte do cliente Putty SSH no sistema operacional Windows.

Usando o sistema operacional Linux

Execute os seguintes comandos:

scp [modifier] [source] [target_directory]

Se um servidor remoto servir como diretório de origem ou de destino, execute os seguintes comandos:

[user]@[server]:[file_path]

Depois de executar o comando, você precisa digitar a senha da conta do servidor remoto.

Em resumo, você pode copiar o arquivo local denominado: /home/user/file.tgz para o diretório home do usuário root do servidor remoto 123.123.123.123 executando o seguinte comando:

scp /home/user/file.tgz root@123.123.123.123:/root

Para baixar o mesmo arquivo de um servidor remoto:

scp root@123.123.123.123:/root/file.tgz /home/user

Você pode copiar vários arquivos de uma vez. Para fazer isso, você deve adicioná-los como a origem. Separe-os por um espaço - o último parâmetro será considerado como o diretório de destino. Por exemplo, para fazer upload de file1 files.tgz e file2.tgz do diretório local para o servidor remoto, você deve executar o comando:

scp file1.tgz file2.tgz root@123.123.123.123:/root

Para copiar o diretório, você precisará usar o modificador de comando -r. Copie o diretório local /home/user/dir para o servidor remoto:

scp-r /home/user/dir root@123.123.123.123:/root

Quando o servidor SSH estiver sendo executado em uma porta não padrão, precisaremos obter a ajuda da opção P. Se você precisar usar a porta 10022:

scp-P 10022 /home/user/file.tgz root@123.123.123.123:/root

Para saber quais outros modificadores você pode usar, basta executar scp sem parâmetros e ler a ajuda.

Usando o sistema operacional Windows

Ao usar o sistema operacional Windows e o Putty como cliente, a formatação do comando permanece a mesma. No entanto, mudaremos o nome do arquivo executável. Precisamos usar uma sintaxe para especificar caminhos para arquivos e diretórios do Windows ao mencionar os diretórios de origem ou de destino. Execute a linha de comando (cmd.exe) ou o PowerShell, abra o diretório com o arquivo pscp .exe e digite o comando:

pscp.exe C: Tempfile.tgz root@123.123.123.123:/root

Se você o executar de outra pasta, precisará especificar o caminho completo para pscp.exe. Se algum dos caminhos contiver espaços, será necessário usar aspas duplas - "caminho do arquivo":

“C:Program FilesPuttypscp.exe” C:Tempfile.tgz root@123.123.123.123:/root

Basta executar o pscp (de forma semelhante ao scp) sem parâmetros e ler a ajuda sobre os modificadores, bem como as informações sobre a sintaxe do comando.

Execução de comandos em um servidor remoto usando a conexão SSH

O protocolo SSH é compatível com a execução de sessões interativas e de comandos e scripts regulares em um servidor remoto.

Usando o sistema operacional Linux

Sintaxe do comando:

ssh [user]@[server] ‘[command]’

Digite a senha do usuário especificado e obtenha a saída do comando no console SSH, se houver.

Por exemplo, podemos encontrar informações sobre o sistema operacional instalado no servidor remoto:

ssh root@123.123.123.123 ‘uname -a’

Para executar vários comandos usando uma única conexão, você pode usar o caractere ";" como separador. Verifique as configurações de rede e as conexões de rede ativas no servidor remoto:

ssh root@123.123.123.123 ‘ifconfig; netstat -anp tcp’

Se precisar executar um arquivo de script local em um servidor remoto: execute o interpretador de comandos (no modo de execução de script). Ele pode ser o bash com a tecla-s e passar o arquivo de script para ele na entrada padrão. Dê uma olhada no exemplo abaixo:

ssh root@123.123.123.123 ‘bash -s’ < /home/user/myscript.sh

O arquivo local: /home/user/myscript.sh será executado em um servidor remoto.

A execução do comando SSH sem parâmetros permite que você veja uma breve referência de sintaxe e uma lista de modificadores adicionais que permitem ampliar a funcionalidade do comando.

Usando o sistema operacional Windows

Para nos conectarmos ao servidor remoto, usaremos o cliente Putty com seu arquivo executável plink.exe. Arquivo, se nosso computador for compatível com o Windows. Use a linha de comando (cmd.exe) ou o PowerShell para trabalhar com esse arquivo.

Para executar o comando em um servidor remoto, use a seguinte sintaxe:

plink.exe [server] - ssh-l [user] “[command]”

Verifique a configuração das interfaces de rede:

plink.exe 123.123.123.123 -ssh-l root “ifconfig”

O plink.exe permite que você use ";" como separador para executar vários comandos, da mesma forma que o comando SSH no Linux:

plink.exe 123.123.123.123 -ssh-l root “ifconfig; netstat-anp tcp”

Você pode executar comandos de um arquivo local usando uma chave adicional m:

plink.exe 123.123.123.123 -ssh-l root-m “C:Tempmyscript.sh”

Ao executar o comando plink.exe sem parâmetros, você pode encontrar uma breve referência de sintaxe e uma lista de modificadores de comando adicionais.