A conexão SSH direta é a forma recomendada de se conectar a uma instância DSW a partir de um terminal local ou do VS Code. Esse tipo de conexão oferece maior velocidade e estabilidade em comparação às conexões via ProxyClient.
Limitações
-
Tipos de instância não suportados
Em grupos de recursos públicos, os tipos de instância cujos nomes começam com
ecs.ebmnão suportam conexões SSH diretas. -
Limites de conexão à rede pública
Ao se conectar a uma instância DSW pela rede pública, o PAI configura automaticamente regras DNAT em cada gateway NAT da Internet. Nenhuma configuração manual é necessária.
Cada gateway NAT da Internet suporta no máximo 100 regras DNAT. Portanto, até 100 instâncias DSW podem se conectar simultaneamente. Para mais informações sobre cotas, consulte Quotas.
Faturamento
O acesso à rede pública para uma instância DSW requer um NAT gateway, um Elastic IP address (EIP) ou um Network Load Balancer (NLB). Gateways NAT, EIPs e NLBs são faturados independentemente. As cobranças continuam mesmo após a interrupção da instância DSW. Exclua esses recursos prontamente quando não forem mais necessários.
Etapas de implementação
Etapa 1: Ativar a resolução DNS privada
As instâncias DSW são implantadas em Virtual Private Clouds (VPCs), e as conexões SSH dependem do DNS privado para resolver os endereços IP das instâncias. Ative a resolução DNS privada antes de se conectar a uma instância DSW. Para mais informações, consulte Activate Private DNS.
Etapa 2: Gerar um par de chaves SSH
Execute o seguinte comando no seu cliente para gerar um par de chaves SSH. Quando solicitado, defina uma senha para o par de chaves. Se você planeja usar o remote_ikernel para se conectar à instância (consulte o exemplo de cenário neste tópico), deixe a senha em branco e pressione Enter.
Gerar o par de chaves no caminho padrão (recomendado)
Execute o seguinte comando:
ssh-keygen
Após a execução do comando, uma chave pública (id_rsa.pub) e uma chave privada (id_rsa) são geradas nos seguintes diretórios. Se já existir um par de chaves SSH, os arquivos existentes serão sobrescritos. Os caminhos padrão variam conforme o sistema operacional:
Windows: diretório
C:\Users\<username>\.ssh.Linux: diretório
/root/.sshpara o usuário root, ou diretório/home/<username>/.sshpara usuários padrão.macOS: diretório
/Users/<username>/.ssh.
Gerar o par de chaves em um diretório personalizado
Execute o seguinte comando:
ssh-keygen -f /your/path/example_rsa # Generates example_rsa.pub and example_rsa in /your/path
Etapa 3: Configurar as definições SSH para a instância DSW
Ao Create a DSW instance, configure os seguintes parâmetros de rede.
Para uma instância existente, clique em Change Settings para modificar os parâmetros e, em seguida, clique em OK para aplicar as alterações.
|
Parâmetro |
Descrição |
|
VPC Settings, vSwitch, Security Group |
Uma VPC Settings, um vSwitch e um Security Group são obrigatórios para criar uma instância DSW em um grupo de recursos públicos. Você pode criar esses recursos seguindo as etapas abaixo. Para mais informações, consulte Create a VPC and vSwitches e Manage security groups. A VPC e o grupo de segurança devem estar na mesma região da instância DSW. Importante
Certifique-se de que as regras de entrada do grupo de segurança permitam tráfego na porta TCP 22 a partir do endereço IP do seu cliente. |
|
Enable SSH |
Ative a opção e copie o conteúdo do arquivo de chave pública |
|
Service Access and Port Configuration |
Após ativar a opção Enable SSH, um serviço chamado SSH será exibido.
|
|
Public Network Access |
Configure este parâmetro se o acesso à rede pública for necessário. Selecione DNAT + EIP.
Para criar um gateway NAT e um EIP, siga estas etapas: Alternativamente, utilize um NLB. Ao criar a instância NLB, defina Instance Network Type como Internet e selecione a mesma VPC da instância DSW atual. Para mais informações, consulte Get started with NLB for IPv4 load balancing. Nota
Se várias instâncias DSW compartilharem a mesma regra DNAT e EIP (ou NLB), utilize portas de acesso público diferentes. |
Etapa 4: Instalar o servidor SSH
Imagens base oficiais e imagens personalizadas derivadas delas já possuem o servidor SSH instalado e iniciado por padrão.
No terminal da instância DSW, execute service ssh status para verificar o status do serviço, ou execute pgrep sshd para confirmar se o processo sshd existe. Caso o serviço SSH não esteja em execução, rode os comandos abaixo para instalar o servidor SSH.
**O status Ready do SSH no console indica apenas que a configuração foi concluída, não que o processo sshd está em execução. Execute pgrep sshd para confirmar.**
sudo apt-get update
sudo apt-get install openssh-server
sudo service ssh start
Se o comando sudo não for encontrado, execute apt-get install sudo primeiro e tente novamente os comandos anteriores.
Em sistemas CentOS ou Red Hat Enterprise Linux (RHEL), execute yum install openssh-server ou dnf install openssh-server.
Etapa 5: Conectar-se à instância DSW
-
Visualize os métodos de acesso.
Na página do DSW, clique no nome da instância para acessar a página de detalhes. Na aba Instance Settings, localize a seção Network Settings e verifique o método de acesso público e o método de acesso à VPC.
NotaSe o acesso público não estiver selecionado na configuração SSH, apenas o método de acesso à VPC será exibido.
-
Conecte-se à instância DSW.
Conexão via SSH
-
Acesso à rede pública
A partir da sua linha de comando local ou de outro terminal, conecte-se à instância DSW utilizando o método de acesso público obtido na Etapa 1.
ssh root@xx.xx.xx.xx -p 1024 # If the private key is not in the default path, specify the key location ssh -i /your/path/example_rsa root@xx.xx.xx.xx -p 1024ImportanteNos comandos acima, o parâmetro
-pespecifica a porta de acesso público configurada para SSH. Neste exemplo, a porta é 1024. -
Acesso à VPC
A partir de outro terminal na VPC, como uma instância ECS, conecte-se à instância DSW utilizando o método de acesso à VPC obtido na Etapa 1.
ssh root@dsw-notebook-xxxx.dsw-xxxx.dsw.pai.alibaba.com -p 22 # If the private key is not in the default path, specify the key location ssh -i /your/path/example_rsa root@dsw-notebook-xxxx.dsw-xxxx.dsw.pai.alibaba.com -p 22
Conexão a partir do VS Code local
-
Abra o VS Code e instale a extensão Remote - SSH na visualização de Extensões.
Após a instalação, abra a Paleta de Comandos, insira
remote-sshe escolha o comando Remote-SSH: Connect to Host... para iniciar a conexão remota. Clique em
no canto inferior esquerdo para abrir a caixa de diálogo Remote-SSH e selecione Connect to Host... > Add New SSH Host....-
Insira o comando de conexão SSH.
ssh root@xx.xx.xx.xx -p 1024 # If the private key is not in the default path, specify the key location ssh -i /your/path/example_rsa root@xx.xx.xx.xx -p 1024 Clique em Open no canto inferior direito. O status da conexão aparecerá no canto inferior esquerdo.
-
Abra um diretório na instância DSW para iniciar o desenvolvimento e a depuração remotos.
Clique no ícone Explorer na barra de atividades à esquerda, clique no botão Open Folder, insira
/mnt/workspacena caixa de diálogo Open File or Folder e clique em OK para abrir o diretório. -
Para executar código, conecte-se a um kernel na instância DSW.
Na lista suspensa Select a Jupyter Kernel na parte superior do VS Code, selecione o kernel recomendado Python 3 (ipykernel).
-
Cenário: Executar um notebook local em uma instância DSW
Pré-requisitos
Conclua as Etapas 1 a 4 deste tópico para configurar a conexão SSH direta. Ao gerar o par de chaves SSH, deixe a senha em branco.
Procedimento
-
No seu terminal local, instale o remote_ikernel e adicione um kernel remoto.
pip install remote_ikernelremote_ikernel manage --add \ --kernel_cmd="ipython kernel -f {connection_file}" \ # No changes required --name="Remote Python" \ --interface=ssh \ --host=root@*.*.*.*:1024 # Replace this with your host address. If the private key is not in the default path, use --host="-i /your/path/example_rsa root@*.*.*.*:1024"Se a mensagem abaixo aparecer, o kernel remoto foi adicionado com sucesso.
Added kernel ['rik_ssh_root_121_40_*_*_1024_remotepython']: SSH root@121.40.*.*:1024 Remote Python.Para visualizar a configuração do kernel remoto, execute o seguinte comando:
remote_ikernel manage --show No VS Code da sua máquina local, abra um arquivo de notebook e alterne o kernel no canto superior direito. Pesquise por Remote Python e selecione-o.
Perguntas frequentes
P: Quais são as diferenças entre a conexão SSH direta e o proxy ProxyClient?
P: Como solucionar falhas de conexão SSH, tempos limite ou rejeição de chave ao me conectar a uma instância DSW?
Solucione o problema por categoria:
-
Falhas de conexão à rede pública
Verifique se as regras de entrada do grupo de segurança permitem tráfego na porta TCP 22 a partir do endereço IP do seu cliente.
Caso existam múltiplos gateways NAT da Internet na VPC, consulte Deploy single-AZ NAT gateways for high availability para verificar as relações de roteamento entre os gateways NAT, vSwitches e tabelas de rotas.
Se houver apenas um gateway NAT, utilize a solução de problemas autosserviço para analisar a conectividade de rede.
-
Falhas de conexão à VPC
Confirme se o cliente e a instância DSW estão na mesma VPC. Execute o comando
digpara testar a resolução DNS do nome de domínio da VPC da instância DSW. SeNXDOMAINfor retornado, a resolução DNS não está funcionando. Verifique as configurações de DNS privado da VPC.Ao utilizar uma imagem personalizada, certifique-se de que o serviço SSH esteja instalado e iniciado. Para mais informações, consulte Etapa 4: Instalar o servidor SSH.
Garanta que as regras de entrada do grupo de segurança permitam tráfego na porta TCP 22.
Execute
ssh -v root@IP -p portpara obter informações detalhadas sobre a conexão.Connection timed outindica problema no grupo de segurança ou na conectividade de rede.Connection refusedsinaliza que a porta não está escutando (sshd não está em execução).Connection resetaponta para um problema de autenticação.
-
Rejeição de chave (Permission denied)
Assegure-se de que a chave pública (todo o conteúdo de
id_rsa.pub) foi adicionada à configuração SSH da instância DSW.Verifique se a chave privada usada no comando SSH corresponde à chave pública. Se a chave privada não estiver no caminho padrão (
~/.ssh/id_rsa), especifique-a usando o parâmetro-i.Valide se as permissões do arquivo
~/.ssh/authorized_keysestão definidas como 600. Executels -l ~/.ssh/authorized_keyspara conferir. Permissões incorretas fazem com que o SSH rejeite a chave pública.
-
Falhas de conexão no VS Code
Confirme se a extensão
Remote - SSHestá instalada e se você inseriu um comando SSH completo, comossh root@xx.xx.xx.xx -p 1024.Teste a conexão executando o comando SSH em um terminal local. Após estabelecer a conexão básica, revise a configuração do VS Code.
Caso surja um erro sobre pipe inexistente, reinicie o VS Code ou reinstale a extensão Remote - SSH.
P: Posso usar uma IDE local como PyCharm para me conectar remotamente a uma instância DSW?
Todos os recursos baseados no protocolo SSH são suportados. Ao se conectar via PyCharm, a IDE baixa e instala automaticamente os componentes do lado do servidor na instância DSW. Por isso, a instância DSW precisa ter acesso à rede pública.
P: Como visualizo o endereço IP público de uma instância?
Se um gateway NAT da Internet estiver configurado, visualize o endereço IP público seguindo estas etapas:
P: Uma instância DSW suporta múltiplos usuários com logins SSH separados?
Por padrão, uma instância DSW fornece apenas o usuário root para logins SSH. O DSW não suporta a criação de múltiplos usuários independentes com logins SSH isolados. É possível criar usuários adicionais manualmente dentro da instância, mas essa não é uma prática oficialmente suportada.
P: Por que não consigo ver os arquivos do workspace ao me conectar a uma instância DSW a partir de uma IDE local como VS Code ou PyCharm?
Após o login SSH, o diretório padrão pode ser o diretório home do usuário root (/root). Os arquivos do workspace geralmente ficam armazenados em um diretório no disco de dados montado, como /mnt/workspace. No VS Code, escolha File > Open Folder para abrir o diretório de trabalho correto.
Referências
Se este método não se adequar ao seu cenário ou se você preferir não configurar componentes de rede adicionais, utilize ProxyClient para se conectar remotamente.
Configure o nome da VPC, o bloco CIDR IPv4 e as informações do vSwitch. Mantenha os demais parâmetros com seus valores padrão e clique em OK para criar a VPC e o vSwitch.



