1.事前准备
1.1 vscode端
- 环境:Linux或Windows均可
- 在vscode上安装扩展Remote - SSH
1.2 服务器端
- 升级apt-get工具并安装ssh
apt-get update
apt-get install ssh
2.配置环境
2.1主机端
- 在主机端生成ssh秘钥,输入命令后一路enter即可
ssh-keygen -t ed25519 -C "邮箱"
- 主机端打开vscode,点击左下角符号,点击Remote-SSH: Open Configuration File…进入主机端ssh配置文件
- 按照如下格式输入信息:
直连:
Host 服务器名,叫什么都可以
HostName 服务器ip地址
User 服务器用户名
Port 服务器需要连接的端口
跳板机
Host 服务器名,叫什么都可以
HostName 目标服务器IP地址
User 目标服务器用户名
ProxyCommand 主机端ssh.exe程序路径 -W %h:%p 跳板机IP地址
Port 目标服务器需要连接的端口
2.2服务器端
- 在服务器端打开/etc/ssh/sshd_config文件,修改部分参数
PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
- 将主机端生成的秘钥(~/.ssh/id_rsa.pub)文件复制到服务器端(~/.ssh/authorized_keys)文件中,如果该文件不存在新建即可。
注意,如果是跳板机登录目标服务器需要在目标服务器和跳板机两台服务器上都写入主机端的ssh秘钥文件,同时在目标服务器端写入跳板机的ssh秘钥文件,方法同上。 - 服务器重启ssh服务
service ssh restart
如果仍然需要输入密码,则是因为authorized_keys权限有问题,不应该有组执行权限,需要调整为
cd ~/.ssh
chmod 700 .
chmod 600 authorized_keys
另,如果无法通过ssh连接docker,有可能是因为无法在docker内启动ssh,报错信息如下:
Redirecting to /bin/systemctl start ssh.service Failed to get D-Bus connection: Operation not permitted
此时应该直接使用/usr/sbin/sshd手动运行docker的ssh服务
另,如果没有/etc/ssh/内容,应该进行手动生成
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''
3.登录
在主机端vscode上点击左下角,点击Remote-SSH: Connect to Host…,选择服务器名即可免密登录。