Se eu estiver conectado a um sistema via SSH, existe uma maneira de copiar um arquivo de volta para o meu sistema local sem iniciar outra sessão de terminal ou tela e fazer scp ou algo semelhante ou sem fazer SSH do sistema remoto de volta ao sistema local?
257
scp file.foo [email protected]:file.foo
: PRespostas:
Conexão mestre
É mais fácil se você planejar com antecedência.
Abra uma conexão principal pela primeira vez. Para conexões subseqüentes, roteie as conexões escravas através da conexão principal existente. No seu
~/.ssh/config
, configure o compartilhamento de conexão para que ocorra automaticamente:Se você iniciar uma sessão ssh da mesma maneira (usuário, porta, máquina) que uma conexão existente, a segunda sessão será encapsulada na primeira. O estabelecimento da segunda conexão não requer nova autenticação e é muito rápido.
Portanto, enquanto você tem sua conexão ativa, pode rapidamente:
scp
oursync
;Encaminhamento
Em uma conexão existente, você pode estabelecer um túnel ssh reverso. Na linha de comando ssh, crie um encaminhamento remoto passando
-R 22042:localhost:22
onde 22042 é um número escolhido aleatoriamente diferente de qualquer outro número de porta na máquina remota. Em seguida,ssh -p 22042 localhost
na máquina remota, você será conectado novamente à máquina de origem; você pode usarscp -P 22042 foo localhost:
para copiar arquivos.Você pode automatizar isso ainda mais com
RemoteForward 22042 localhost:22
. O problema é que, se você se conectar ao mesmo computador com várias instâncias do ssh, ou se alguém estiver usando a porta, não receberá o encaminhamento.Se você não tiver ativado o encaminhamento remoto desde o início, poderá fazê-lo em uma sessão ssh existente. Digite Enter
~C
Enter-R 22042:localhost:22
Enter. Consulte "Caracteres de escape" no manual para obter mais informações.Há também algumas informações interessantes neste segmento de falha do servidor .
Copiar colar
Se o arquivo for pequeno, você pode digitá-lo e copiar e colar da saída do terminal. Se o arquivo contiver caracteres não imprimíveis, use uma codificação como base64 .
Mais convenientemente, se você tiver o encaminhamento X ativo, copie o arquivo na máquina remota e cole-o localmente. Você pode enviar e receber dados de
xclip
ou paraxsel
. Se você deseja preservar o nome do arquivo e os metadados, copie e cole um arquivo morto.fonte
Outra maneira fácil (IMO) seria:
Ou, se você preferir algo semelhante a uma GUI, tente o Midnight Commander . Eles chamam o recurso Shell-Link . A maioria das distros os possui em seus sistemas de pacotes como
mc
.fonte
mc
é o mais rápido de usar.tgz
arquivos o tempo todo :)O SSH suporta alguns comandos, por meio do caractere de escape (
~
por padrão):O
!args
parece ser o mais próximo do que você deseja. Observe que você precisará terPermitLocalCommand
ativado o seu/etc/ssh_config
arquivo para que os~C
comandos funcionem (consulteman ssh_config
).Você pode reutilizar a mesma sessão ssh se você configurar um
ControlMaster
nossh_config
. Se você fizer isto:você tecnicamente nunca saiu da sessão ssh e não precisa se autenticar novamente. Provavelmente mais complicado do que você gostaria, mas não consigo pensar em outra maneira fácil.
fonte
!args
na mensagem de ajuda.args
não é na primeira mensagem de ajuda (~?
), mas no segundo (uma vez que se entra nossh>
tempo com~C
, pode-se digitarhelp
nossh>
prompt)Todos esses são métodos muito complicados.
Você pode montar o sistema de arquivos remoto em sua máquina local com
sshfs
:Em seguida, você pode copiar e colar o arquivo com nautilus, gnome, konqueror, dolphin, bash ou qualquer outra coisa.
fonte
sshfs -oIdentityFile=~/.ssh/keyfile.pem [email protected]:/ /mnt/sshfs/
-R
, para remoto para local) ou encaminhada (-L
, para local para remoto) para executar transferências de arquivos, supondo que você tenha algum daemon de transferência de arquivos ouvindo na outra extremidade.Mas nada disso é realmente necessário, IMO. O protocolo SSH suporta múltiplos canais em uma única conexão, e o cliente OpenSSH suporta multiplexação. Supondo que você tenha
ControlMaster
eControlPath
configurado (tambémControlPersist
é útil),fonte
Uma abordagem ainda mais simples: abra o Filezilla (ou seu navegador FTP favorito), abra uma conexão ssh no mesmo site, encontre o arquivo e arraste-o para a estrutura de arquivos local. Se você é novo no Filezilla, use o recurso "gerenciador de sites" para se reconectar rapidamente da próxima vez.
Sim, eu sei que isso é óbvio para a maioria de vocês (e não exatamente), mas alguns (como eu) que encontraram esse thread em busca de uma solução apenas para terminal podem ter esquecido o óbvio.
fonte
ssh://SERVER
.O que eu achei a melhor e mais eficiente solução é usar
xclip-copyfile
exclip-pastefile
.No servidor, você usa
xclip-copyfile
para copiar um ou mais arquivos. Esses arquivos estão disponíveis no servidor local. Lá, você pode usarxclip-pastefile
.Isso ignora a necessidade de usar
scp
ou ter um servidor ssh local. Eu uso isso com o cygwin, por exemplo. O único problema é que isso requer instalação,xclip
se você ainda não o possui. Ah, e isso funciona com arquivos binários também.fonte
Uma das muitas razões pelas quais usamos o SecureCRT - apesar de preferir o software de código aberto, quando prático - é a facilidade de fazer transferências de arquivos. Simplesmente não há substituição direta no mundo do F / OSS.
O SecureCRT começou como um programa Windows puro em meados dos anos 90, mas foi portado para o Mac OS X e Linux há alguns anos .
O SecureCRT possui três recursos principais para a transferência de arquivos de e para um sistema no qual o SSH está inserido:
ZModem , YModem , XModem , Kermit e ASCII - SecureCRT é um tipo antigo de emulador de terminal, suportando vários protocolos de transferência de arquivos em banda.
O mais fácil de usar é o ZModem. Quando você digita algo como
sz file-to-download
na linha de comando remota, osz
programa remoto grava uma sequência de escape que informa ao SecureCRT para iniciar imediatamentefile-to-download
o download no diretório de download padrão.Um toque interessante é que o diretório de download é personalizável por sessão. Usamos isso para ter diretórios por site em nosso servidor de arquivos do escritório principal, para que não tenhamos que ordenar manualmente os arquivos baixados.
(
sz
é o programa "send ZModem", parte dolrzsz
pacote. Ele já está empacotado para a maioria dos sistemas Unixy. Se por algum motivo seu sistema remoto ainda não o tiver instalado e você não puder instalar facilmente um pacote binário, o O pacote fonte é pequeno e altamente portátil. Mais de uma vez, tive que enviar umlrzsz
pacote "sharchive" ouuuencode
'tar' para um sistema remoto simplificado para que eu pudesse arquivar arquivos do ZModem.)SFTP - O SecureCRT possui uma implementação básica de SFTP totalmente integrada.
Por "totalmente integrado", quero dizer que, quando você fornece o comando de menu SFTP ou o atalho de teclado, ele abre uma nova guia conectada ao site remoto pela mesma conexão SSH. Portanto, você não precisa fazer login novamente, e a conexão é estabelecida um pouco mais rápido do que se você tivesse aberto uma conexão SFTP separada para o mesmo servidor.
Eu caracterizo o recurso SFTP como "básico", porque o VanDyke Software possui um produto de transferência de arquivos separado, o SecureFX . É mais funcional que o cliente SFTP embutido e também se integra ao SecureCRT.
O recurso SFTP do SecureCRT permite configurar diretórios remotos e locais padrão que são separados da configuração do ZModem.
Esse recurso SFTP possui um tipo básico de interface de linha de comando, imitando o
sftp
programa do OpenSSH , exceto que possui recursos como a Tabconclusão de comandos. Assim, recuperar um arquivo remoto chamadosomefile.tar.gz
pode ser tão fácil quantoget so
TabEnter.Arrastar e soltar - Se você arrastar e soltar um arquivo na janela do terminal, ele o digitará automaticamente
rz
e começará a enviar o arquivo.Como alternativa, você pode abrir uma guia SFTP e soltar um arquivo nessa guia para enviá-lo via SFTP. Assim, o envio de um arquivo para um sistema remoto pode ser tão simples como Alt-P, arrastar , soltar .
Descobrimos que as transferências acontecem muito mais rapidamente via SFTP, provavelmente porque é um protocolo baseado em TCP, por isso se beneficia das grandes janelas deslizantes das modernas pilhas TCP / IP . O ZModem foi desenvolvido nos dias em que um tamanho de bloco de 64 kiB era considerado "grande". Assim, grande parte da velocidade potencial de um link é absorvida no ZModem enquanto cada extremidade aguarda as confirmações de transferência de bloco.
Uma coisa boa sobre o modo de operação de arrastar e soltar é que ele elimina uma das tensões do uso do ZModem. Quando você digita
rz
no sistema remoto, o SecureCRT exibe um seletor de arquivos automaticamente. Você tem cerca de um minuto para encontrar e selecionar o arquivo antes do tempo limite do lado remoto. Isso cria uma vibração de corrida contra o relógio que não é agradável. Arrastar e soltar permite que você encontre o arquivo à vontade e inicie a transferência com um único movimento rápido do mouse.Ainda usamos o método manual, iniciando a transferência com um
rz
comando explícito . Isso ocorre porque o SecureCRT permite configurar um diretório de upload por sessão, que apontamos para a pasta no servidor de arquivos que sempre contém a versão mais recente do software que esse site remoto específico está executando. Para essas transferências, não há corrida contra o relógio, pois o seletor de arquivos é aberto no local correto para começar.fonte
Usar "!" para converter o arquivo em uma representação ASCII do seu arquivo (por exemplo
! uuencode myfile.bin >uuencode.dat
). Então use! cat uuencode.dat >target.dat
. Depois disso, use o uudecode no lado do destino:! uudecode target.dat >myfile.bin
fonte