Conexão SCP reversa sobre SSH

17

Muitas vezes, preciso de algum arquivo de algum servidor quando estou no meu laptop. Mas se eu não souber onde está esse arquivo, tenho que sshentrar no servidor, olhar em volta exite depois scp server:file .. Se estiver trabalhando com minha área de trabalho e meu servidor, ambos com IPs estáticos, posso apenas enviar o arquivo SCP em ordem inversa ( scp desktop:~ file), mas não posso fazer isso no meu laptop. Existe alguma maneira legal de enviar um arquivo SCP para trás através de uma conexão SSH? Para que o computador ao qual eu me conecto com o SSH envie um arquivo de volta ao cliente?

pavpanchekha
fonte
Por que não usar mDNS?
Ignacio Vazquez-Abrams
11
Eu acredito que esta questão já foi respondida corretamente aqui: unix.stackexchange.com/a/2869
shellster

Respostas:

20

Isso seria muito mais fácil com o SFTP, que é uma extensão do SSH que suporta operações de arquivos mais complexas que o SCP. Praticamente todas as distribuições modernas de Unix e Linux são compatíveis. Para usá-lo, basta executar este comando para conectar-se ao servidor:

sftp server

Em seguida, você pode usar os comandos lse cdpara navegar e encontrar o arquivo que está procurando. Depois de encontrá-lo, use o getcomando para fazer o download. Por exemplo, para fazer o download file.txtdo seu diretório de trabalho atual no servidor para o seu diretório de trabalho atual na sua máquina local, basta executar:

get file.txt

Para fazer /home/pavpanchekha/textfiles/file.txto download no servidor para ~/textfiles/a sua máquina local, execute:

get /home/pavpanchekha/textfiles/file.txt ~/textfiles/

Por outro lado, você também pode fazer upload de arquivos dessa maneira. Para fazer upload file.txtdo diretório de trabalho atual local para o diretório de trabalho atual do servidor, digite:

put file.txt

Você também pode usar caminhos completos para cada um como pode get:

put ~/textfiles/file.txt /home/pavpanchekha/textfiles/file.txt

Para obter uma lista completa dos comandos SFTP disponíveis, basta executar helpno sftp>prompt.

Patches
fonte
11
Isso é muito legal, obrigado. Existe alguma maneira de iniciar um ao contrário, se eu já estiver em uma conexão SSH? Caso contrário, eu me vejo ssh'ing em algum lugar, percebendo que quero transferir um arquivo, encerrando a conexão SSH, estabelecendo uma conexão SFTP, encerrando-a e retornando ao SSH.
Pavpanchekha 20/03
2
@pav: A SSH_CLIENTvariável de ambiente contém o endereço IP do host conectado entre outras informações. Você pode usar isso para criar um alias de shell para retornar facilmente o SFTP ao host de origem. Basta adicionar esta linha ~/.bashrcno servidor: alias sftpback="sftp $(echo $SSH_CLIENT | awk '{print $1}')" Em seguida, desconecte e reconecte-se do SSH para que a alteração entre em vigor ou execute-a como se fosse um comando para que entre em vigor imediatamente. A partir daí, você pode executar o sftpbackSFTP de volta ao cliente do qual está se conectando, independentemente de qual seja.
Patches
Isso é o melhor !!! Obrigado por me salvar do NANO (edição de arquivo on-line), que simplifica o processo.
Mohsin
0

O gerenciador de arquivos do console Midnight Commander (mc) possui um sistema VFS que permite o gerenciamento de arquivos / conexão SFTP em servidores remotos. Também é executado no Cygwin no Windows. A interface padrão mostra dois painéis independentes; poderíamos abrir o diretório remoto do SFTP em um deles e transferir arquivos para / do outro painel facilmente. Inclui um editor / visualizador de arquivos (mcedit) com destaque de sintaxe.

Fjor
fonte