fbpx

Comandos Linux – Comando scp

Comando Linux scp

comando scp

Em sistemas operacionais do tipo Unix, o comando scp copia arquivos em uma conexão de rede criptografada e segura .

scp significa “cópia segura”. É semelhante ao comando padrão do Unix, cp , mas opera em uma conexão de rede segura.

Descrição

O comando scp pode ser considerado uma versão de rede do cp . Por exemplo, você pode usar o seguinte comando cp :

cp /home/stacy/images/image*.jpg / home / stacy / arquivo

… que copiar todos os arquivos no diretório de imagens de usuário Stacy ‘s diretório cujo nome começa com ‘ imagem ‘ e termina em ‘ .jpg ‘ para o diretório do arquivo em seu diretório home.

Da mesma forma, você pode usar o comando scp :

scp /home/stacy/images/image*.jpg [email protected] : / home / stacy / archive

… para carregar esses mesmos arquivos no servidor myhost.com , usando o nome de login stacy , no diretório remoto / home / stacy / archive . O scp solicitará a senha remota de stacy antes de iniciar o upload.

Ou você pode especificar um local remoto como o local de origem, se desejar fazer o download de arquivos. Por exemplo,

scp [email protected] : /home/stacy/archive/image*.jpg / home / stacy / downloads

… faria o download de todos os arquivos no diretório remoto / home / stacy / archive em myhost.com, cujo nome começa com ” image ” e termina em .jpg , no diretório local / home / stacy / downloads .

Você também pode especificar um host remoto como a origem e o destino. Por exemplo, o seguinte comando transferirá um arquivo de um diretório remoto em myhost.com para outro diretório no mesmo servidor:

scp [email protected] : /home/user/dir1/file.txt [email protected] : / home / user / dir2

… enquanto este comando transfere um arquivo de um host remoto para outro:

scp [email protected] : /somedir/somefile.txt [email protected] : / anotherdir

Lembre-se de que todas as transferências scp têm o benefício de serem seguras: elas são criptografadas, como uma sessão ssh ou sftp .

Copiando arquivos

O scp copia arquivos com segurança entre hosts em uma rede . Ele usa ssh para transferência de dados e usa a mesma autenticação e fornece a mesma segurança que o ssh . Ao contrário do rcp , o scp solicitará senhas ou senhas, se forem necessárias para autenticação.

Os nomes de arquivos podem conter uma especificação de usuário e host para indicar que o arquivo deve ser copiado para / desse host. Os nomes de arquivos locais podem ser explicitados usando nomes de caminho absolutos ou relativos para evitar que o scp trate nomes de arquivos contendo ‘ : ‘ como especificadores de host. Cópias entre dois hosts remotos também são permitidas.

Sintaxe

scp [-12346BCpqrv] [-c cipher ] [-F ssh_config ] [-i identity_file ]
    [-l limit ] [-o ssh_option ] [-P port ] [-S program ]
    [[ usuário @] host1 :] arquivo1 ... [[ usuário @] host2 :] arquivo2

Opções

-1Força o scp a usar o protocolo 1. Este é um protocolo mais antigo.
-2Força o scp a usar o protocolo 2. Este é um protocolo mais antigo.
-3Cópias entre dois hosts remotos são transferidas pelo host local. Sem essa opção, os dados são copiados diretamente entre os dois hosts remotos. Esta opção também desativa o medidor de progresso.
-4Força o scp a usar apenas endereços IPv4.
-6Força o scp a usar apenas endereços IPv6.
-BUsa o modo em lote , operando sem nenhuma entrada de teclado interativa. Isso significa que o scp não pode autenticar a sessão pedindo ao usuário que digite uma senha; portanto, é necessário um método de autenticação não interativo. Para um exemplo de configuração de autenticação não interativa, consulte Configurando a autenticação de chave pública em nossa documentação sftp .
-CAtivar compactação, que passa o sinalizador -C para ssh para ativar a compactação da conexão criptografada.
cifra -cSeleciona a cifra a ser usada para criptografar a transferência de dados. Esta opção é passada diretamente para o ssh .
-F ssh_configEspecifica um arquivo de configuração alternativo por usuário para ssh . Esta opção é passada diretamente para o ssh .
-i identity_fileSeleciona o arquivo do qual a identidade (chave privada) para autenticação RSA é lida. Esta opção é passada diretamente para o ssh .
-l limiteLimita a largura de banda usada , especificada em Kbit / s.
-o ssh_optionPode ser usado para passar opções ao ssh no formato usado no ssh_config . Isso é útil para especificar opções para as quais não há sinalizador de linha de comando scp separado . As opções válidas são:

EndereçoFamíliaEspecifica qual família de endereços usar ao se conectar. Os argumentos válidos são ” qualquer “, ” inet ” (use apenas IPv4) ou ” inet6 ” (use apenas IPv6).
BatchModeSe definido como ” yes “, a consulta de senha / senha será desativada. Além disso, a opção ServerAliveInterval será definida como 300 segundos por padrão. Essa opção é útil em scripts e outros trabalhos em lotes em que nenhum usuário está presente para fornecer a senha e onde é desejável detectar rapidamente uma rede interrompida. O argumento deve ser ” sim ” ou ” não “. O padrão é ” não “.
BindAddressUse o endereço especificado na máquina local como o endereço de origem da conexão. Útil apenas em sistemas com mais de um endereço. Observe que esta opção não funciona se UsePrivilegedPort estiver definido como ” yes “.
ChallengeResponseAuthenticationEspecifica se é necessário usar a autenticação de resposta ao desafio. O argumento para esta palavra-chave deve ser ” yes ” ou ” no “. O padrão é ” yes “.
CheckHostIPIf this flag is set to “yes“, ssh will additionally check the host IP address in the known_hosts file. This allows ssh to detect if a host key changed due to DNS spoofing. If the option is set to “no“, the check will not be executed. The default is “yes“.
CipherSpecifies the cipher to use for encrypting the session in protocol version 1. Currently, “blowfish“, “3des“, and “des” are supported. des is only supported in the ssh client for interoperability with legacy protocol 1 implementations that do not support the 3des cipher. Its use is strongly discouraged due to cryptographic weaknesses. The default is “3des“.
CiphersSpecifies the ciphers allowed for protocol version 2 in order of preference. Multiple ciphers must be comma-separated. The supported ciphers are “3des-cbc“, “aes128-cbc“, “aes192-cbc“, “aes256-cbc“, “aes128-ctr“, “aes192-ctr“, “aes256-ctr“, “arcfour128“, “arcfour256“, “arcfour“, “blowfish-cbc“, and “cast128-cbc“. The default is:

aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128, aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc, aes256-cbc,arcfour

CompressionSpecifies whether to use compression. The argument must be “yes” or “no“. The default is “no“.
CompressionLevelSpecifies the compression level to use if compression is enabled. The argument must be an integer from 1 (fastest) to 9 (slowest, best). The default level is 6, which is good for most applications. The meaning of the values is the same as in gzip. Note that this option applies to protocol version 1 only.
ConnectionAttemptsSpecifies the number of tries (one per second) to make before exiting. The argument must be an integer. This may be useful in scripts if the connection sometimes fails. The default is 1.
ConnectionTimeoutSpecifies the timeout (in seconds) used when connecting to the SSH server, instead of using the default system TCP timeout. This value is used only when the target is down or really unreachable, not when it refuses the connection.
GlobalKnownHostsFileSpecifies one or more files to use for the global host key database, separated by whitespace. The default is /etc/ssh/ssh_known_hosts/etc/ssh/ssh_known_hosts2.
GSSAPIAuthenticationSpecifies whether user authentication based on GSSAPI is allowed. The default is “no“. Note that this option applies to protocol version 2 only.
GSSAPIDelegateCredentialsForward (delegate) credentials to the server. The default is “no“. Note that this option applies to protocol version 2 connections using GSSAPI.
HostSee HostName.
HostbasedAuthenticationSpecifies whether to try rhosts based authentication with public key authentication. The argument must be “yes” or “no“. The default is “no“. This option applies to protocol version 2 only and is similar to RhostsRSAAuthentication.
HostKeyAlgorithmsSpecifies the protocol version 2 host key algorithms that the client wants to use in order of preference. The default for this option is:

[email protected][email protected][email protected][email protected],[email protected][email protected],[email protected], ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, ssh-rsa,ssh-dss

If hostkeys are known for the destination host then this default is modified to prefer their algorithms.

HostKeyAliasEspecifica um alias que deve ser usado em vez do nome do host real ao procurar ou salvar a chave do host nos arquivos de banco de dados de chaves do host. Essa opção é útil para encapsular conexões SSH ou para vários servidores em execução em um único host.
Nome de anfitriãoEspecifica o nome do host real no qual efetuar login. Isso pode ser usado para especificar apelidos ou abreviações para hosts. Se o nome do host contiver a sequência de caracteres ‘ % h ‘, ele será substituído pelo nome do host especificado na linha de comando (isso é útil para manipular nomes não qualificados). O padrão é o nome fornecido na linha de comandos. Endereços IP numéricos também são permitidos (na linha de comando e nas especificações HostName ).
IdentityFileEspecifica um arquivo a partir do qual a identidade de autenticação DSA, ECDSA ou DSA do usuário é lida. O padrão é ~ / .ssh / identity para o protocolo versão 1 e ~ / .ssh / id_dsa , ~ / .ssh / id_ecdsa e ~ / .ssh / id_rsa para o protocolo versão 2. Além disso, quaisquer identidades representadas pelo agente de autenticação serão ser usado para autenticação. O ssh tentará carregar as informações do certificado do nome do arquivo obtido anexando -cert.pub ao caminho de um IdentityFile especificado .

O nome do arquivo pode usar a sintaxe til para se referir ao diretório inicial de um usuário ou a um dos seguintes caracteres de escape: ‘ % d ‘ (diretório inicial do usuário local), ‘% u ‘(nome de usuário local),’ % l ‘(nome do host local),’ % h ‘(nome do host remoto) ou’ % r ‘(nome de usuário remoto).

É possível ter vários arquivos de identidade especificados nos arquivos de configuração; todas essas identidades serão tentadas em sequência. Várias diretivas IdentityFile serão adicionadas à lista de identidades tentadas (esse comportamento difere do de outras diretivas de configuração).

IdentitiesOnlyEspecifica que o ssh deve usar apenas os arquivos de identidade de autenticação configurados nos arquivos ssh_config , mesmo se o ssh-agent oferecer mais identidades. O argumento para esta palavra-chave deve ser ” yes ” ou ” no “. Esta opção é direcionada para situações em que o ssh-agent oferece muitas identidades diferentes. O padrão é ” não “.
LogLevelFornece o nível de verbosidade usado ao registrar mensagens do ssh . Os valores possíveis são: QUIET , FATAL , ERRO , INFO , VERBOSE , DEBUG , DEBUG1 , DEBUG2 e DEBUG3 . O padrão é INFO . DEBUG e DEBUG1 são equivalentes. DEBUG2 e DEBUG3 especificam níveis mais altos de saída detalhada.
MACsEspecifica os algoritmos MAC (código de autenticação de mensagens) em ordem de preferência. O algoritmo MAC é usado na versão 2 do protocolo para proteção da integridade dos dados. Vários algoritmos devem ser separados por vírgula. O padrão é:

hmac-md5, hmac-sha1, [email protected] , hmac-ripemd160, hmac-sha1-96, hmac-md5-96, hmac-sha2-256, hmac-sha2-256-96, hmac-sha2-512, hmac-sha2-512-96

NoHostAuthenticationForLocalhostThis option can be used if the home directory is shared across machines. In this case, localhost will refer to a different machine on each of the machines and the user will get many warnings about changed host keys. However, this option disables host authentication for localhost. The argument to this keyword must be “yes” or “no“. The default is to check the host key for localhost.
NumberOfPasswordPromptsSpecifies the number of password prompts before giving up. The argument to this keyword must be an integer. The default is 3.
PasswordAuthenticationSpecifies whether to use password authentication. The argument to this keyword must be “yes” or “no“. The default is “yes“.
PortSpecifies the port number to connect on the remote host. The default is 22.
PreferredAuthenticationsSpecifies the order in which the client should try protocol 2 authentication methods. This allows a client to prefer one method (e.g., keyboard-interactive) over another method (e.g., password). The default is:

gssapi-with-mic,hostbased,publickey, keyboard-interactive,password

ProtocolSpecifies the protocol versions ssh should support in order of preference. The possible values are ‘1‘ and ‘2‘. Multiple versions must be comma-separated. When this option is set to “2,1” ssh will try version 2 and fall back to version 1 if version 2 is not available. The default is ‘2‘.
ProxyCommandSpecifies the command to use to connect to the server. The command string extends to the end of the line, and is executed with the user’s shell. In the command string, any occurrence of ‘%h‘ will be substituted by the hostname to connect, ‘%p‘ by the port, and ‘%r‘ by the remote username. The command can be basically anything, and should read from its standard input and write to its standard output. It should eventually connect an sshd server running on some machine, or execute sshd -i somewhere. Host key management will be done using the HostName of the host being connected (defaulting to the name typed by the user). Setting the command to “none” disables this option entirely. Note that CheckHostIP is not available for connects with a proxy command.

This directive is useful in conjunction with nc and its proxy support. For example, the following directive would connect via an HTTP proxy at 192.0.2.0:

ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %p

PubkeyAuthenticationSpecifies whether to try public key authentication. The argument to this keyword must be “yes” or “no“. The default is “yes“. This option applies to protocol version 2 only.
RhostsRSAAuthenticationSpecifies whether to try rhosts based authentication with RSA host authentication. The argument must be “yes” or “no“. The default is “no“. This option applies to protocol version 1 only and requires ssh to be setuid root.
RSAAuthenticationSpecifies whether to try RSA authentication. The argument to this keyword must be “yes” or “no“. RSA authentication will only be attempted if the identity file exists, or an authentication agent is running. The default is “yes“. Note that this option applies to protocol version 1 only.
ServerAliveIntervalSets a timeout interval in seconds after which if no data is received from the server, ssh will send a message through the encrypted channel to request a response from the server. The default is 0, indicating that these messages will not be sent to the server, or 300 if the BatchMode option is set. This option applies to protocol version 2 only. ProtocolKeepAlives and SetupTimeOut are Debian-specific compatibility aliases for this option.
ServerAliveCountMaxDefine o número de mensagens ativas do servidor (veja abaixo) que podem ser enviadas sem o ssh receber nenhuma mensagem do servidor. Se esse limite for atingido enquanto as mensagens ativas do servidor estiverem sendo enviadas, o ssh será desconectado do servidor, encerrando a sessão. É importante observar que o uso de mensagens ativas do servidor é muito diferente do TCPKeepAlive (veja abaixo). As mensagens ativas do servidor são enviadas através do canal criptografado e, portanto, não serão falsificadas. A opção TCP keepalive ativada pelo TCPKeepAlive é falsificada. O mecanismo ativo do servidor é valioso quando o cliente ou servidor depende de saber quando uma conexão se tornou inativa.

O valor padrão é 3 . Se, por exemplo,ServerAliveInterval (veja abaixo) é definido como 15 e ServerAliveCountMax é deixado no padrão. Se o servidor não responder, o ssh será desconectado após aproximadamente 45 segundos. Esta opção se aplica apenas ao protocolo versão 2; no protocolo versão 1, não há mecanismo para solicitar uma resposta do servidor para as mensagens ativas do servidor; portanto, a desconexão é de responsabilidade da pilha TCP.

SmartcardDeviceConsulte a documentação do fabricante do cartão inteligente.
StrictHostKeyCheckingSe esse sinalizador estiver definido como ” yes “, o ssh nunca adicionará automaticamente chaves de host ao arquivo ~ / .ssh / known_hosts e se recusa a se conectar a hosts cuja chave de host foi alterada. Isso fornece proteção máxima contra ataques de cavalos de Troia, embora possa ser irritante quando o arquivo / etc / ssh / ssh_known_hosts é mal mantido ou quando conexões com novos hosts são frequentemente feitas. Esta opção força o usuário a adicionar manualmente todos os novos hosts. Se esse sinalizador estiver definido como ” não “, o ssh adicionará automaticamente novas chaves de host aos arquivos de hosts conhecidos pelo usuário. Se esse sinalizador estiver definido como ” perguntar“, novas chaves de host serão adicionadas aos arquivos de host conhecidos do usuário somente depois que o usuário confirmar que é isso que eles realmente querem fazer, e o ssh se recusará a se conectar a hosts cuja chave de host foi alterada. As chaves de host de hosts conhecidos serão ser verificado automaticamente em todos os casos.O argumento deve ser ” yes “, ” no ” ou ” ask “. O padrão é ” ask “.
TCPKeepAliveEspecifica se o sistema deve enviar mensagens de manutenção de atividade do TCP para o outro lado. Se forem enviados, a morte da conexão ou falha de uma das máquinas será notada corretamente. Esta opção usa apenas keepalives TCP (em vez de usar keepalives no nível ssh); portanto, leva muito tempo para perceber quando a conexão morre. Como tal, você provavelmente também deseja a opção ServerAliveInterval . No entanto, isso significa que as conexões morrerão se a rota for interrompida temporariamente e algumas pessoas acham isso irritante.

O padrão é ” yes ” (para enviar mensagens de manutenção de TCP), e o cliente notará se a rede cair ou o host remoto morrer. Isso é importante em scripts, e muitos usuários também desejam.

Para desativar as mensagens de manutenção ativa do TCP, o valor deve ser definido como “não “

UsePrivilegedPortEspecifica se é necessário usar uma porta privilegiada para conexões de saída. O argumento deve ser ” sim ” ou ” não “. O padrão é ” não “. Se definido como ” yes “, o ssh deve ser root setuid. Observe que esta opção deve ser configurada como ” yes ” para RhostsRSAAuthentication com servidores mais antigos.
Do utilizadorEspecifica o usuário a ser usado para efetuar login. Isso pode ser útil quando um nome de usuário diferente é usado em máquinas diferentes. Isso evita o problema de lembrar o nome de usuário na linha de comando.
UserKnownHostsFileEspecifica um ou mais arquivos para usar no banco de dados de chaves do host do usuário, separados por espaços em branco. O padrão é ~ / .ssh / known_hosts , ~ / .ssh / known_hosts2 .
VerifyHostKeyDNSSpecifies whether to verify the remote key using DNS and SSHFP resource records. If this option is set to “yes“, the client will implicitly trust keys that match a secure fingerprint from DNS. Insecure fingerprints will be handled as if this option was set to “ask“. If this option is set to “ask“, information on fingerprint match will be displayed, but the user will still need to confirm new host keys according to the StrictHostKeyChecking option. The argument must be “yes“, “no“, or “ask“. The default is “no“. Note that this option applies to protocol version 2 only.
-P portSpecifies the port to connect to on the remote host. Note that this option is written with a capital “P“, because -p is already reserved for preserving the times and modes of the file in rcp.
-pPreserves modification times, access times, and modes from the original file.
-qDisables the progress meter.
-rRecursively copy entire directories.
-S programName of program to use for the encrypted connection. The program must understand ssh options.
-vModo verboso . Faz com que scp e ssh imprimam mensagens de depuração sobre seu progresso. Isso é útil na depuração de problemas de conexão, autenticação e configuração.

Exemplos

scp myfile.txt [email protected] : myfile.txt

Copia o arquivo myfile.txt para o host remoto example.computerhope.com , usando o nome de usuário hope para efetuar login.

scp [email protected] : / home / hope / *.

Copia todos os arquivos no diretório remoto / home / hope no host remoto myremotehost.com no diretório de trabalho local .

scp -r [email protected] : / home / jeff / documents / home / jeff / downloads / documentos

Copia todos os arquivos no diretório remoto / home / jeff / documents no servidor myhost.com , incluindo todos os subdiretórios e arquivos que eles contêm, no diretório local / home / jeff / downloads / documents .

scp -l 100 [email protected] : /home/jeff/archive.zip.

Transfira o arquivo remoto /home/jeff/archive.zip no host remoto myhost.com como o usuário jeff para o diretório de trabalho local, e limitar a transferência de 100 kilobytes por segundo.

scp [email protected] : /files/file1.zip [email protected] : / archives

Copia o arquivo no diretório remoto /files/file1.zip no host remoto firsthost.com no diretório archive remoto no host remoto secondhost.com . Você será solicitado a digitar as senhas das contas remotas [email protected] e [email protected] , respectivamente. A transferência irá diretamente de um host remoto para o outro.

scp -3 [email protected] : /files/file1.zip [email protected] : / archives

Igual ao comando acima, mas em vez de transferir diretamente o arquivo de um host remoto para outro, a transferência é roteada através do host local.

rcp – Copia arquivos para ou de um sistema remoto.
sftp – Conduza uma sessão FTP interativa em uma conexão de rede segura.
slogin – Faça login em um sistema remoto com segurança.

21 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900

Copyright © Linux Force Security  - Desde 2011.