BLOCKCHAIN

Como usar o túnel SSH e o MetaMask para usar o nó remoto do Ethereum



Configurar um túnel SSH

ConfiguraçãoO que?Este é o processo confuso que mencionei antes. Eu não entrarei em detalhes aqui, mas na verdade permite que solicitações do computador local sejam automaticamente encaminhadas para outro computador, caso em que ele está sendo executadoGethO VPS do nó. Quando configurarmos o MetaMask mais tarde, entenderemos por que isso é necessário.

Obtenha o endereço IP do VPS

Para encaminhar a solicitação ao seu VPS, você precisa saber seu endereço IP. Isso é feito retornando ao seu painel Linode e indo para a esquerdaLinodesTabulação para determinar. Você deve ver o endereço IP do seu nó à direita, logo abaixo da localização geográfica do seu VPS. Parece assim:172.16.389.54. Anote o IP, vamos usá-lo em breve.

SSH no Windows

A partir de abril de 2018, o Windows 10 tem o OpenSSH instalado por padrão. Isso forneceSsh.exeE vários outros utilitários SSH. No momento desta publicação, para verificar o status do SSH no Windows, fiz o download do ISO 10 do Windows mais recente e instalei-o na máquina virtual. O OpenSSH já está instalado e pode ser obtido deleCmd.exe. Se você tiver o Windows 10 instalado, mas não tiver o OpenSSH instalado, siga esteArtigo da MicrosoftInstruções para fazer isso. Se você estiver usando uma versão mais antiga do Windows, poderá usar vários utilitários para fornecer a funcionalidade SSH.

Iniciar túnel

Nós assumimos que você tem o direitoSshAcesso da linha de comando ao cliente. O comando a seguir configura um túnel SSH. Este comando é o mesmo nas três plataformas.

Ssh -N -v Usuário@172.16.389.54 -L 8545: localhost:8545

O-NTrocar notificaçãoSshNão execute comandos remotos. Queremos uma conexão contínua ouTúnelVá para o nosso nó. Não há execução remota do comando neste momento. O-vMudarSshSaída de algumas informações de log à medida que são executadas. Em seguida, fornecemos o nome de usuário e o endereço IP para efetuar login em nosso VPS. O resto configura o próprio túnel, especificando o computador local8545Qualquer coisa recebida na porta (a porta na qual o nó está escutando solicitações RPC) deveCom segurança através do túnelEncaminhar para a mesma porta no nó. Este é o ponto mais importante: ninguém mais pode fazer isso, exceto você. Seu nó não será atacado devido à porta RPC exposta.

Configurando MetaMask

Esta é a parte mais simples do desbaste de todo o túnel. Eu suponho que você deixou o túnel SSH e você pode ver sua saída de log. No navegador, clique na cabeça de raposa no canto superior direito da janela do navegador para ativar o MetaMask. No topo da janela MetaMask está a rede Ethereum atualmente selecionada. Se você estiver usando beta dApps, ele pode dizer comoRinkeby Test Network. Clique no nome e você verá um menu suspenso. O topo éRede Ethereum Principal. Este é o nosso destino final, mas não queremos usar este item de menu. Se você fizer isso, o MetaMask se conectará ao nó Infura para derrotar o propósito completo desta longa jornada. Na parte inferior da lista, você veráLocalhost 8545. Clique nele para ver a saída do túnel SSH. Você deve ver uma linha semelhante a esta:

Debug1: conexão à porta 8545 Encaminhando para a porta localhost 8545 Solicitado. Debug1: canal 1: Novo (direct-tcpip)

MetaMask agora deve tê-lo no topoLocalhost 8545Você deveria ver no meioDepositarEEnviarBotão Se sim, agora você está remotoGethO nó está conectado ao MetaMask, embora o MetaMask ache que está conectado à máquina local.

Tornar permanente permanente

Agora você tem um totalmente funcionalGethNode e pode ser tunelado remotamente via MetaMask e SSHCom segurançaConecte-se a este nó. Parabéns, claro, o computador caiu ou deliberadamente fechado. Para evitar configurar tudo novamente ao reiniciar, precisamos fazer duas coisas: primeiro, configurarGethO nó inicia automaticamente no VPS, dois, de alguma forma, fazendo o mesmo para o túnel SSH em nossa máquina local.

Persistência remota

Relativamente falando, esta é uma parte simples do processo permanente. Nós só precisamos lidar com um sistema operacional Linux, e nós estabelecemos uma maneira de iniciar a tarefa automaticamente:Systemd. Além da política do Linux, vamos começar.

SystemdManipulando processos na maioria dos sistemas Linux, o Ubuntu não é exceção. Para isso, ele vai ler.serviçoArquivo Para nos fazerGethO nó é iniciado automaticamente na inicialização, precisamos fornecer umGeth.serviceArquivo Retorno e deLinodesA guia inicia o console. Se o seuGethO nó ainda está em execução e deve ser desligado. Como antes, digite o seguinte para reconectar ao seuGethNó:

$ tmux attach -t 0

Pare seuGethNodeCtrl-c. Novamente, aguarde até que você esteja no prompt de comando e digiteCtrl-dRemoverTuxux. Por favor, substitua-o na linha de comando.UsuárioEmUsuário = usuárioO nome de usuário que você forneceu antes:

$ cat> geth.service 8545 (Instalação) WantedBy = default.target EOF

Isso vaiGeth.serviceCrie um arquivo no diretório atual. Você precisa fazer algo para disponibilizá-loSystemd:

$ sudo mv geth.service /etc/systemd/system/ $ sudo systemctl daemon-reload $ sudo systemctl ativar geth.service $ sudo systemctl start geth.service

Para verificar o status de um serviço, use o seguinte comando:

$ sudo systemctl status geth.service

Em algum lugar perto do começo da saída, você veráAtivo (correndo). Se você não fizer isso, uma mensagem de erro será exibida abaixo. Boa sorte para ver a saída contínuaGeth, digite o seguinte:

$ sudo journalctl -f -u geth.service

Se tudo correr bem, você verá a inclusãoNovo segmento importadoO fluxo da linha DigiteCtrl-cPara parar a saída. Não se preocupe, isso não vai acabar com você.GethNode Ele só pára de mostrarSystemdSaída de log.

A partir de agora, quando o seu VPS for reiniciado por qualquer motivoGethEle será reiniciado automaticamente quando for iniciado.

Permanente local

Você iniciou com sucesso o túnel SSH no seu computador, mas assim que você desligar o terminal ou colocar o laptop para dormir, o túnel será desconectado e desconectado. Isto é obviamente sub-ótimo. É um pouco complicado iniciar uma sessão de terminal e reativar o túnel. O problema é que os três principais sistemas operacionais têm três maneiras diferentes de configurar serviços permanentes, como o tunelamento SSH.

Par de chaves SSH

Para automatizar qualquer um dos itens a seguir, você precisa ter uma chave privada SSH e uma chave pública. Se você costumaSshDigite o computador remoto sem fornecer cryptocurrency, então você já configurou. Mesmo neste caso, você precisa enviar a chave pública para o computador remoto em execução.Geth. Instruções sobre como fazer isso – e como gerar um par de chaves SSH primeiro quando necessário – Este artigo do LinodeOuDe AtlassianEste artigode

A explicação é muito boa. Esses artigos são longos e tecnicamente fortes, o uso de chaves SSH para modificação é um processo bem conhecido, portanto, não é necessário repetir essas instruções aqui. Se você pode digitar:

$ ssh Usuário@172,16.389,54

Forneça seu próprio nome de usuário e controle remotoGethO IP do nó, e você pode entrar sem fornecer uma criptomoeda, você está muito feliz. Se esse não for o caso, nenhum dos itens a seguir funcionará.

Linux

O processo de tornar o túnel SSH permanente é semelhante ao nosso processo no VPS. Nós instalamos umPersistent.ssh.tunnel.serviceArquive e configure-o para que o serviço seja iniciado a partir do sistema. Além de ser diferenteExecStartA única grande diferença em uma linha é que precisamos adicionar uma linha com um pequeno atraso de inicialização antes da linha para garantir que a rede esteja pronta antes do início do serviço. Lembre-se, claro, substituirUsuárioEmUsuário = usuárioUse seu nome de usuário na área de trabalho eUser@172.16.389.54Seu nome de usuário está no sistema remoto e seu endereço IP.

$ cat> persistent.ssh.tunnel.service 10 ExecStart = / usr / bin / ssh -N -v usuário @172,16389.54 -L 8545: localhost:8545 (Install) WantedBy = default.target EOF

Isso vaiPersistent.ssh.tunnel.serviceCrie um arquivo no diretório atual. Como antes, você precisa fazer algo para disponibilizá-loSystemdDesta vez no seu sistema local:

S sudo systemvl persistent.ssh.tunnel

Para verificar se o serviço foi iniciado com êxito, digite o seguinte:

$ sudo systemctl status persistent.ssh.tunnel.service Sistema Apple

O macOS da Apple tem seu próprio jeito de configurar serviços persistentesLaunchctl. ComSystemdLinux é semelhante, você fornece o arquivo de configuração – desta vez éDocumento XMLEm vez deFormulário de arquivo INI – Em seguida, use o documento XML para instalar e ativar o serviço. Primeiro, criamos esse arquivo e fornecemos nosso nome de usuário e endereço IP do VPS como de costume.User@172.16.389.54. Novamente, forneça seu nome de usuário do macOSUserName.

$ cat> com.persistent.ssh.tunnel.plist "1.0" encoding ="UTF-8"?> span classe = "hljs-string"> "- // Apple // DTD PLIST 1.0 // EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> "1.0"> Labelstring> com.persistent.ssh.tunnelString> UserNamestring> usuárioString> StandardErrorPathstring> /tmp/persistent.ssh.tunnel.errString> ProgramArgumentsstring> / usr / bin / sshString> string> -NString> string> -vString> string> usuário @172,16389.54String> string> -LString> string>8545: localhost:8545String> KeepAlivetrue /> EOF

CriarCom.persistent.ssh.tunnel.plistApós o arquivo, mova-o paraLaunchctlO local onde esses arquivos devem residir. Finalmente, o comando o instala no sistema e inicia o processo em execução em segundo plano.

$ sudo mv com.persistent.ssh.tunnel.plist / Biblioteca / LaunchDaemons / $ sudo launchctl load /Library/LaunchDaemons/com.persistent.ssh.tunnel.plist

Instalação.plistArquivo/ Library / LaunchDaemons /Disponibilizá-lo para qualquer usuário no sistema, não depende do seu login para tornar o túnel ativo.

Janela

Para configurar um serviço de persistência no Windows, você precisa baixar um utilitário que forneça essa funcionalidade. Estou usando o código aberto, livre e domínio públicoNSSM,Então você precisa continuar antes de continuarInstalar.

As etapas a seguir são criadasTúnel ssh-persistentePreste serviços de manutenção e ajuste vários parâmetros de modo que você possa usá-lo para conectar MetaMask a seuGethNodeNssmPor uma questão de clareza, eu forneci comandos e respostas. Para executar esses comandos, você precisa iniciar uma sessão de terminal como administrador do Windows. Você pode fazer isso abrindo o menu Iniciar e digitandoCmd. Isso deve destacar o prompt de comandoMelhor jogoMenu Selecione Executar como administrador à direita. Clique em Sim para permitir que este aplicativo faça alterações. Se tudo correr bem, você verá uma janela de terminal preta aberta com um prompt de comando. Por favor, digite os seguintes comandos cuidadosamente para garantir que você nãoC: Windows system32>Digite um prompt de comando para garantir que cada comando obtenha uma resposta semelhante à fornecida aqui. Substituir pelo nome de usuário do Windows usuário(reservado.) e cryptocurrency de login do WindowsSenha. Também forneça seu nome de usuário e controle remotoGethEndereço IP do nóUser@172.16.389.54.

C: Windows system32> nssm instalar persistent-ssh-tunnel "C: Windows System32 OpenSSH ssh.exe" "-N -v usuário@172.16.389.54 -L 8545: localhost: 8545" Serviço "persistent-ssh-tunnel" Instalado com sucesso! C: Windows system32> nssm conjunto persistent-ssh-tunnel ObjectName ". usuário" "senha" Definir parâmetro "ObjectName" Para Serviço "persistent-ssh-tunnel"C: Windows system32> conjunto nssm persistent-ssh-tunnel DisplayName "Túnel SSH Persistente" Definir parâmetro "DisplayName" Para Serviço "persistent-ssh-tunnel"C: Windows system32> conjunto nssm persistent-ssh-tunnel Descrição "Estabelece um túnel SSH persistente entre um servidor remoto e o computador local." Definir parâmetro "Descrição" Para Serviço "persistent-ssh-tunnel"C: Windows system32> nssm start persistente-ssh-túnel persistente-ssh-túnel: START: A operação foi concluída com êxito. Testar um túnel SSH persistente

Supondo que tudo corra bem, agora você pode executar serviços do sistema em execução em segundo plano no Windows, Linux ou macOS e iniciar sempre que o computador local for reiniciado. Para testá-lo, abra o navegador onde o MetaMask está instalado e siga as instruções acima.Configurando MetaMaskInstruções para fazer isso. MetaMask deve ser conectado novamenteLocalhost 8545Mas desta vez ele usa o serviço de segundo plano para encapsular o pedido para o seuGethVPS. Você não precisa mais considerar estabelecer uma conexão com um nó Ethereum remoto.

Conclusão

Por conveniência, fiz escolhas específicas nesses artigos. Por exemplo, optei por usar o VPS para nossos nós Ethereum, que na verdade é um provedor específico de VPS. Como mencionado acima, isso requer dinheiro. Desenvolvedores de aplicativos que geram receita do projeto devem considerar essa rota. Por outro lado, alguém que é apenas curioso e quer seguir os passos descritos pode configurar o VPS, seguir o tutorial e aprender todo o conhecimento após o teste, fechando e excluindo o VPS. Isso custa apenas alguns centavos no final: se você gastar duas horas para concluir este tutorial, suponhaLinode 16GB VPS, você tem que pagar US $ 24. Mesmo considerando o tempo de sincronização, você ainda tem apenas alguns dólares.

Você também é livre para escolher outros provedores VPS. Oceano DigitalGotículasO preço é muito competitivo. O processo aqui deve funcionar igualmente bem em gotículas. A AWS da Amazon também é possível. Usar seu próprio hardware pode economizar custos mensais, mas o processo se torna mais complicado e não é adequado para artigos para técnicos de médio porte.

Outra opção que fiz foi usar a distribuição Ubuntu Linux como nossoGethO sistema operacional do nó. O Ubuntu é uma das distribuições mais populares, mas podemos dizer que você pode escolher outraVários Distribuição Linux. Se você está mais familiarizado com outra distribuição, então você deve ser capaz de lidar com a diferença entre sua escolha e as instruções baseadas no Ubuntu acima.

Eu escolhi um utilitário de serviço do sistema para o Windows, sem alternativas, e cobri o aspecto do SSH no sistema operacional. Da mesma forma, se eu quiser acessar todos os aspectos de todos os softwares em todas as plataformas, esses artigos abordarão novelas. Peço desculpas àqueles que querem mais detalhes. Se você tiver dúvidas sobre essas coisas, poste uma resenha.

Esta é definitivamente uma longa jornada. Eu sei que tudo isso é um pouco ambicioso, especialmente para aqueles com baixo conteúdo técnico. Espero que você possa seguir estas instruções e terminar com seu próprio nó remoto Ethereum, conectando-se ao MetaMask através de um túnel SSH seguro. Se você tiver alguma dúvida ou precisar de ajuda com esse processo, poste um comentário aqui. Estou feliz em ajudar.

Original: https://kauri.io/article/348d6c66da2949978c85bf2cd913d0ac/v5/make-use-of-your-remote-ethereum-node-using-an-ssh-tunnel-and-metamask




0X簡體中文版:

Como usar o túnel SSH e o MetaMask para usar o nó remoto do Ethereum