Eu quero copiar arquivos de um computador remoto (W) para um computador host privado (P) via scp. Como não consigo me conectar à máquina W diretamente, eu uso um túnel ssh em duas máquinas diferentes com a porta 22. O que eu gostaria de fazer, é entrar na máquina W e de lá fazer uma transferência de arquivo scp para a máquina P, o problema é que P está escondido em uma rede, então eu não posso especificar um host remoto ip quando estou logado na máquina W. Existe uma solução para isso? Eu consigo fazer isso quando estou logado na máquina P, mas eu não quero para lembrar o caminho do arquivo toda vez que eu copiar um arquivo.
1
W -- ? -- ? -- P
?
?W -- M1 -- R1 -- M2 -- P
? Ou o que exatamente é o caminho de rede entre W e P?Respostas:
Depois de esclarecer sua configuração como discutido acima, seu sistema se parece com isto:
R
é um roteador NAT que permite conexões apenasP
paraM1
, mas não o contrário, e todos os nós devem ser usados para estabelecer uma conexão.Solução 1
Seu único problema real é o roteador
R
sobre o qual você não tem controle, então você deve de alguma forma estabelecer um túnel para permitirW
para se conectar de volta. A solução mais simples seria terP
estabelecer uma conexão SSH paraM1
e estabelecer uma porta reversa para a frente.Você pode então configurar um segundo túnel SSH
W
paraM2
para encaminhar pacotes locais para a porta inversa da portaM1
, que por sua vez pode ser usado para estabelecer uma conexão SSH encapsuladaW
paraP
.Solução 2
Agora, isso adiciona uma certa complexidade a toda a configuração, o que a torna propensa a erros. Uma solução melhor seria estabelecer uma conexão VPN entre
W
eM1
,P
eM2
e entreM1
eM2
. Em seguida, você pode estabelecer um roteamento usando um intervalo de endereços privadosW
paraP
sobre estes três túneis. Para que isso funcione, você precisa de acesso root a ambosM1
eM2
E você precisa configurar firewalls adequados para que ninguém de fora entre nas VPNs.Existem, é claro, outras soluções também, mas o que você precisa para pensar em como os pacotes passarão por todos esses bloqueios, a solução real pode então ser adaptada para se adequar às suas ferramentas.
fonte
W
paraP
comssh -l userame -p 2210 localhost
. Apenas uma pergunta é, exatamente como eu uso scp, ou seja, passar o nome de usuário da porta etc, eu não consegui fazer isso funcionar? Eu tentei algo comoscp parameter.ini -p 2210 username@localhost:~/parameter2.ini
depois de três tentativas de senha recebo a seguinte mensagemPermission denied (publickey,keyboard-interactive). lost connection
scp
usa um capitalP
para port, entãoscp -P 2210 file user@localhost:~/destfile
. Eu realmente não sei porquessh
escp
são inconsistentes lá - provavelmente por razões históricas, como sempre quando você não pode explicar algo com argumentos;)
ssh: connect to host localhost port 2210: Connection refused lost connection
Eu recomendaria montar o sistema de arquivos remoto localmente usando
sshfs
. Eu não sei os detalhes da sua configuração, mas vou dar um exemplo. Eu configurei um túnel através de um servidor remoto (R1) para um segundo servidor inacessível (R2) na rede do R1 com este comando:Agora posso me conectar ao R2 da seguinte forma:
Eu também posso usar
sshfs
para montar localmente um diretório do R2:Eu tentei isso usando um túnel através de um não dois servidores remotos, mas não vejo nenhuma razão para que ele não funcione com 3 ou mais, desde que o túnel tenha sido configurado corretamente.
Isso não é exatamente o que você pediu, mas deve servir como uma solução alternativa. Depois de ter o sistema de arquivos remoto montado localmente, você pode usar
cp
para copiar arquivos de / para ele.fonte
autofs
(Vejo Aqui ) com osoft
opção.sshfs
não tem nada a ver com isso ...scp
funciona bem quando você configura o túnel comssh -fN