VSCode 连接远程服务器
$USER_AT_HOST="your-user-name-on-host@hostname"
$PUBKEYPATH="$HOME\.ssh\id_rsa.pub"
$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,在本地创建公钥:
一路回车到底。然后复制添加:ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
SSH Server
Ubuntu 上默认安装 OpenSSH,如果没有:sudo apt update
sudo apt install openssh-server
sudo systemctl status ss
# If the firewall is enabled on your system, make sure to open the SSH port:
sudo ufw allow ssh
SSH Client 免密登录
查看本地 ~/.ssh/ 目录是否有 id_rsa.pub:
如果没有,在本地创建公钥:cd ~/.ssh/
一路回车到底。ssh-keygen -t rsa
然后把本地公钥复制到远程机器的 ~/.ssh/
目录下,并命名为 authorized_keys
scp ~/.ssh/id_rsa.pub username@hostname:~/.ssh/authorized_keys
保持连接
配置服务端
SSH总是被强行中断,导致效率低下,可以在服务端配置,让 server 每隔30秒向 client 发送一个 keep-alive 包来保持连接:
vim /etc/ssh/sshd_config
添加
ClientAliveInterval 30
ClientAliveCountMax 60
第二行配置表示如果发送 keep-alive 包数量达到 60 次,客户端依然没有反应,则服务端 sshd 断开连接。如果什么都不操作,该配置可以让连接保持 30s*60 , 30 min
重启本地 ssh
sudo service ssh restart
如果找不到 ssh,”Failed to restart ssh.service: Unit ssh.service not found.” ,需要安装
sudo apt-get install openssh-server
配置客户端
如果服务端没有权限配置,或者无法配置,可以配置客户端 ssh,使客户端发起的所有会话都保持连接:
vim /etc/ssh/ssh_config
添加
ServerAliveInterval 30
ServerAliveCountMax 60
本地 ssh 每隔30s向 server 端 sshd 发送 keep-alive 包,如果发送 60 次,server 无回应断开连接。
端口转发
$ ssh -L 5601:localhost:5601 *@*
$ ssh -R 10808:localhost:10808 *@*