ssh登录docker容器-opengauss

166 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情

前几天发现,假如我要借给朋友自己的服务器来跑应用的话,自己没有时间给朋友配置服务,可以在容器里面配置ssh登录,交给别人自己去配置

这里以在腾讯云轻量级服务器上配置一个opengauss数据库容器为例,讲一讲我所做的全流程

参考文章1:docker - 容器里安装ssh - lacker - 博客园 (cnblogs.com)

参考文章2:docker中安装ssh服务 - chen-kh - 博客园 (cnblogs.com)

创建并运行容器

首先是创建容器

docker run --name dockername --privileged=true -d -e GS_PASSWORD=@Aa123456 -v /home/zhongyuhui:/var/lib/opengauss/data -p 6543:5432 -p 8500:22 enmotech/opengauss:latest

这里解释一下这句docker run的含义

  • --name 是容器名字,自己填写
  • -v 是挂载文件夹,/var/lib/opengauss/data是容器内opengauss数据库文件所在的位置
  • 第一个-p是数据库挂载端口,前面无所谓,后面得是5432
  • 第二个-p是ssh登录需要映射的端口,前面无所谓,后面得是22

然后进入容器

docker exec -it dockername bash

安装并配置ssh

因为容器内核十分简洁,我们需要先安装一个nano,之后用得上

apt-get update # 更新源

apt-get install nano

之后我们换源,后面的下载会舒服很多

nano /etc/apt/sources.list

删除里面所有的内容,然后将腾讯云自己的源放入

deb http://mirrors.tencentyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.tencentyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.tencentyun.com/ubuntu/ focal-updates main restricted universe multiverse
#deb http://mirrors.tencentyun.com/ubuntu/ focal-proposed main restricted universe multiverse
#deb http://mirrors.tencentyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.tencentyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.tencentyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.tencentyun.com/ubuntu/ focal-updates main restricted universe multiverse
#deb-src http://mirrors.tencentyun.com/ubuntu/ focal-proposed main restricted universe multiverse
#deb-src http://mirrors.tencentyun.com/ubuntu/ focal-backports main restricted universe multiverse

保存后退出,再更新源

apt-get update

安装openssh-server并启动

apt-get install openssh-server
# 启动之前需手动创建/var/run/sshd,不然启动sshd的时候会报错
mkdir -p /var/run/sshd
# sshd以守护进程运行
/usr/sbin/sshd -D &
# 安装netstat,查看sshd是否监听22端口
apt-get install net-tools
netstat -apn | grep ssh

配置ssh登录

# 生成ssh key
ssh-keygen -t rsa
# 修改sshd-config允许root登陆
nano /etc/ssh/sshd_config
# 将下面这句
# PermitRootLogin prohibit-passwd
改为
PermitRootLogin yes

修改后退出,之后创建登录密码

passwd # 运行命令后直接输入密码

修改完sshd-config之后需要重启sshd服务

// 找到pid
ps -aux | grep ssh
kill -9 pid
/usr/sbin/sshd -D &

ps -aux | grep ssh # 找到ssh的pid

这里是5564,之后

kill -9 5564

/usr/sbin/sshd -D & # 再次运行ssh

这样就配置完了,我们尝试在其它机器上登录,我这里用powershell

ssh -p 8500 root@ip # ip就是你自己服务器的弹性公网ip

输入密码,登录成功

注意此时是root用户登录,如果是要公开访问的容器,最好配置普通用户登录