![无法通过 ssh 连接到 docker 容器](https://linux22.com/image/1603114/%E6%97%A0%E6%B3%95%E9%80%9A%E8%BF%87%20ssh%20%E8%BF%9E%E6%8E%A5%E5%88%B0%20docker%20%E5%AE%B9%E5%99%A8.png)
我在服务器上运行 docker,并通过运行部署了一个容器:
docker run -d -p docker_server_ip:3001:22 --name test14 -ti rhel_7_4
运行时docker ps
我可以看到该实例。
另外,我看到 Docker 服务器正在监听:
netstat -ntalp | grep 3001
tcp 0 0 docker_server_ip:3001 0.0.0.0:* LISTEN 10362/docker-proxy
如果我尝试 ssh 到这个容器,我会收到“连接被拒绝”的消息(linux iptables 已关闭)。
ssh root@docker_server_ip -p 3001 - “ssh:连接到主机 docker_server_ip 端口 3001:连接被拒绝”
我错过了什么?
答案1
不建议在容器内运行 SSH 服务器,请参阅原因和最佳实践这篇博文。
例如,要从 Docker 复制文件,请使用:
docker cp {container_name}:{file_path} {target_file_path OR target_dir_ended_with_slash}
但是,如果你确实需要 ssh(例如,容器在远程主机上运行),请确保容器运行sshd
,下面是我这样做的方式:
- 安装 sshd 和 vi:
sudo apt install -y openssh-server vim
- 在sshd_config中设置
PermitRootLogin yes
:sudo vi /etc/ssh/sshd_config
- 重启
sshd
服务:sudo service ssh restart
- 给root用户添加密码:
sudo passwd
然后你就能够使用 SSH 连接了。