vs code 远程ssh连接docker
1, docker 配置ssh服务
- 安装ssh
apt-get update
apt-get install openssh-server
- 开启ssh服务
进入目录查看是否有sshd文件,如果没有,则使用如下命令创建
mkdir -p /var/run/sshd
启动ssh服务
/usr/sbin/sshd -D &
安装netstat
apt-get install net-tools
查看sshd是否监听22端口
netstat -apn | grep ssh
如下图表示成功。
修改ssh配置文件允许登录
vim /etc/ssh/sshd_config
#PermitRootLogin prohibit-password # 默认打开 禁止root用户使用密码登陆,需要将其注释
PubkeyAuthentication yes #启用公钥私钥配对认证方式
PermitRootLogin yes #允许root用户使用ssh登录
修改完sshd-config之后重启sshd服务
找到ssh的pid
ps -aux | grep ssh
杀掉该pid
kill -9 <pid>
重启ssh
/usr/sbin/sshd -D &
设置密码
passwd
进行宿主机ssh到docker测试
ssh root@0.0.0.0 -p <port-id>
其他机器远程登录可参考如下命令
sudo docker run -itd -e NVIDIA_VISIBLE_DEVICES=0 --gpus "device=0" --shm-size 32G --ulimit memlock=-1 --ulimit stack=67108864 -p <port-id>:22 -v /:/work <docker-name>:<tag> /bin/bash
3, 设置docker开机自动开启ssh服务
创建自动开机脚本
touch /root/start_ssh.sh
赋予权限
chmod +x /root/start_ssh.sh
添加内容
vim /root/start_ssh.sh
#!/bin/bash
LOGTIME=$(date "+%Y-%m-%d %H:%M:%S")
echo "[$LOGTIME] startup run..." >>/root/start_ssh.log
service ssh start >>/root/start_ssh.log
将自动开启ssh脚本服务添加到.bashrc中
vim ~/.bashrc
# auto start ssh
if [ -f /root/start_ssh.sh ]; then
. /root/start_ssh.sh
fi
宿主机保存容器
sudo docker commit <xxxxxxxx> <docker-name>:<tag>