VSCode 连接远程服务器

  1. $USER_AT_HOST="your-user-name-on-host@hostname"
  2. $PUBKEYPATH="$HOME\.ssh\id_rsa.pub"
  3. $pubKey=(Get-Content "$PUBKEYPATH" | Out-String); ssh "$USER_AT_HOST" "mkdir -p ~/.ssh && chmod 700 ~/.ssh && echo '${pubKey}' >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

参考资料:

  • https://code.visualstudio.com/docs/remote/troubleshooting#_configuring-key-based-authentication

    GitHub / Gitee / GitLab SSH 配置

    如果没有ssh key,在本地创建公钥:
    1. ssh-keygen -t rsa
    一路回车到底。然后复制添加:
    1. cat ~/.ssh/id_rsa.pub

    SSH Server

    Ubuntu 上默认安装 OpenSSH,如果没有:
    1. sudo apt update
    2. sudo apt install openssh-server
    3. sudo systemctl status ss
    4. # If the firewall is enabled on your system, make sure to open the SSH port:
    5. sudo ufw allow ssh

    SSH Client 免密登录

    查看本地 ~/.ssh/ 目录是否有 id_rsa.pub:
    1. cd ~/.ssh/
    如果没有,在本地创建公钥:
    1. ssh-keygen -t rsa
    一路回车到底。

然后把本地公钥复制到远程机器的 ~/.ssh/ 目录下,并命名为 authorized_keys

  1. scp ~/.ssh/id_rsa.pub username@hostname:~/.ssh/authorized_keys

保持连接

配置服务端

SSH总是被强行中断,导致效率低下,可以在服务端配置,让 server 每隔30秒向 client 发送一个 keep-alive 包来保持连接:

  1. vim /etc/ssh/sshd_config

添加

  1. ClientAliveInterval 30
  2. ClientAliveCountMax 60

第二行配置表示如果发送 keep-alive 包数量达到 60 次,客户端依然没有反应,则服务端 sshd 断开连接。如果什么都不操作,该配置可以让连接保持 30s*60 , 30 min
重启本地 ssh

  1. sudo service ssh restart

如果找不到 ssh,”Failed to restart ssh.service: Unit ssh.service not found.” ,需要安装

  1. sudo apt-get install openssh-server

配置客户端

如果服务端没有权限配置,或者无法配置,可以配置客户端 ssh,使客户端发起的所有会话都保持连接:

  1. vim /etc/ssh/ssh_config

添加

  1. ServerAliveInterval 30
  2. ServerAliveCountMax 60

本地 ssh 每隔30s向 server 端 sshd 发送 keep-alive 包,如果发送 60 次,server 无回应断开连接。

端口转发

  1. $ ssh -L 5601:localhost:5601 *@*
  2. $ ssh -R 10808:localhost:10808 *@*

参考资料