我在服务器上运行 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 连接了。