Pular para o servidor intermediário via SSH

5

Acabei de ser contratado para trabalhar em um laboratório com um grande cluster 'ol linux'. Eu sou um cara do mac / windows, então ainda estou tentando descobrir como navegar usando uma linha de comando 'nix'. Até agora eu não encontrei nenhum problema real, mas eu encontrei cerca de 5000 coisas diferentes e irritantes relacionadas ao aprendizado de um novo sistema.

O maior incômodo até agora é este: por alguma razão (segurança, algo sobre como esses servidores são configurados que eu não conheço o suficiente ainda, etc.) ao efetuar login no cluster de fora do campus via SSH, Primeiro você tem que SSH em um antigo imac que está sentado em uma mesa no laboratório e, em seguida, de lá SSH no cluster. Eu tenho usado o comando SCP para copiar arquivos do meu Mac inicial para o cluster:

primeiro em uma janela de terminal:

 my-home-mac:scp file [email protected]:~/target

depois em outra janela de terminal (na qual estou logado no imac do laboratório):

 lab-imac:scp file [email protected]:~/target

e o problema é que toda vez que faço isso, sou forçado a primeiro fazer o SCP dos arquivos no laboratório imac (e inserir uma senha), e então SCP os arquivos de lá para o cluster (e inserir outra senha) . Estou tentando ajudar a desenvolver este programa em C que é dividido em 4 dúzias de arquivos, por isso estou movendo muitos arquivos por aí, e isso está me enlouquecendo.

Acho que vou ter que aprender o shell script, mas enquanto isso, só para começar a usar, tenho algumas perguntas:

  1. Como posso configurar o terminal no meu Mac para que eu não precise sempre digitar as senhas para o imac ou cluster do laboratório?

  2. Existe alguma maneira de enviar arquivos SCP (ou algum outro comando) diretamente do meu Mac inicial para o cluster sem passar pelo intermediário?

  3. Existe alguma maneira de configurar o Fugu (ou qualquer outro cliente SSH com um gui, no que diz respeito ao assunto) no meu Mac para que ele possa levar em conta o servidor intermediário (o imac do laboratório) e agir como está me conectando diretamente ao cluster?

Sou físico, e todos os outros no laboratório são biólogos, e o cara que colocou tudo isso para trás já passou há muito tempo, então estou chegando a vocês, todos vocês no maravilhoso estouro de pilha. comunidade, para me dar uma mão aqui. Obrigado.

    
por tel 25.09.2010 / 20:28

5 respostas

6

No SSH, você pode configurar nós intermediários para serem saltados automaticamente com as entradas Host e ProxyCommand, veja este

Para não precisar digitar sua senha, consulte este link

    
por 25.09.2010 / 20:40
5

Você pode configurar as chaves para evitar a necessidade de digitar senhas. Tenho certeza de que já foi abordado aqui antes (consulte Como eu uso uma chave pública SSH de uma máquina remota? ; hint ssh-keygen ), e eu sempre uso o cliente de linha de comando OpenSSH (instalado com fink no meu mac, com o gerenciador de pacotes local no linux), então não vou abordar clientes quasi-gráficos bobos.

Receita para encaminhar ssh ou scp por meio de um gateway

Você precisará de duas linhas de comando na sua máquina original (que eu chamarei de orig). O gateway é chamado de gate e o destino dest.

Primeira linha de comando:

orig$ ssh -L 1111:dest.tld:22 gate.tld

Isso liga a porta 1111 de saída em orig para a porta 22 recebida em dest por meio de um túnel ssh através de gate .

Agora, se você precisar desse encaminhamento por um tempo, configure isso para fazer algo que não deixe a sessão expirar. Eu uso top .

Segunda linha de comando:

orig$ ssh -p 1111 username_on_dest@localhost

ou

orig$ scp -P 1111 path/to/file/on/orig/filename username_on_dest@localhost:path/on/dest/new_filename

(observe que a opção de especificação de porta usa letras maiúsculas diferentes para ssh e scp ... arghhh!) Leia a documentação de várias maneiras pelas quais você pode mexer com isso, mas esse é o esquema básico. Muito útil se você usa regularmente recursos que são mantidos fora da rede pública por motivos de segurança.

    
por 25.09.2010 / 22:39
1

Para evitar digitar senhas em todo o lugar, use as chaves SSH. Existem muitos recursos aqui na SU e outro lugar sobre como fazer isso. Uma palavra de conselho: sempre coloque uma senha em sua chave!

Para "ignorar" o gateway mac e acessar as máquinas do laboratório diretamente, você precisa usar os recursos de tunelamento do SSH. Você estabelece um vínculo entre o seu Mac doméstico e o Mac do gateway do laboratório, encaminhando as portas do seu Mac local para as máquinas do laboratório. Em seguida, você se conecta à máquina do Mac local nessas portas específicas e o tráfego é encaminhado para a máquina do laboratório.

Considerando o seguinte:

  • LABIMAC = o gateway mac
  • LAB01 = servidor nº 1 no laboratório atrás do gateway
  • LAB02 = servidor # 2 no laboratório atrás do gateway
  • LABNN = servidor #N no laboratório atrás do gateway

Você poderia ter uma linha de comando SSH que se parecesse com o seguinte:

ssh -L 2001:LAB01:22 -L 2002:LAB02:22 2003:LABNN:22 joe@LABIMAC

para estabelecer os túneis e, em seguida, executar comandos SSH individuais para as máquinas do laboratório:

ssh -p 2001 joe@localhost
ssh -p 2002 joe@localhost
ssh -p 2003 joe@localhost

Os nomes de usuários podem ser diferentes em cada máquina de laboratório, é claro. Isso tudo pode ficar um pouco prolixo, então você pode criar aliases no SSH arquivo de configuração para ajudar:

host LAB01
hostname localhost
port 2001

host LAB02
hostname localhost
port 2002

host LAB03
hostname localhost
port 2003

Depois, você pode pular a porta e o localhost na linha de comando e fazer algo mais natural, assim que o túnel para o Mac do laboratório estiver estabelecido:

ssh joe@LAB01

Você pode até facilitar o estabelecimento do túnel usando o arquivo de configuração:

host LABIMAC
LocalForward 2001 LAB01:22
LocalForward 2002 LAB02:22
LocalForward 2003 LABNN:22

De modo que toda vez que você fizer ssh para LABIMAC, esses encaminhamentos de porta locais serão estabelecidos automaticamente:

ssh joe@LABIMAC

(e em uma segunda janela)

ssh joe@LAB01

Você também pode procurar em autossh para manter aberta a conexão de encapsulamento inicial durante os períodos de inatividade. / p>     

por 26.09.2010 / 15:27
0

1) Já respondemos: Chaves SSH - Login automático - Sem senha & Mais seguro .

|||||||

2) Transfira seus arquivos com o rsync:

(isto é) Usando a porta 22:

rsync -av -e ssh / var / arquivos / mysource / [email protected]: / var / waytogo / example

Usando uma porta diferente (recomendado)

rsync -av -e 'ssh -p 34xx' / var / arquivos / mysource / [email protected]: / var / waytogo / example

^^^

O exemplo acima não excluirá arquivos extras deixados no servidor de destino.

||||||||||||

3a) Clientes SSH realmente não precisam de uma GUI, o PuTTy é fácil e divertido após uma pequena curva de aprendizado. : o)

3b) O encaminhamento no login pode ser roteirizado; Para semi-automático, basta criar um alias de comando e você está com uma ou duas teclas pressionadas.

Nota: os aliases são muito fáceis de aprender, no Linux edit /root/.bashrc

alias job='ssh -p 34xx [email protected]'

Agora basta digitar "job" como um comando e você está logado na outra máquina (usando suas chaves SSH)

    
por 26.09.2010 / 03:13
0

Uma melhoria adicional para substituir o segundo comando é usar o FileZilla como uma GUI para arrastar entre máquinas locais e remotas, supondo que você já tenha configurado o tunelamento

orig$ ssh -L 1111:dest.tld:22 gate.tld

Isso permite que você faça o upload de arquivos.

    
por 13.07.2011 / 13:26