在centos7开启SSH服务

1、查看是否已安装了SSH服务

  # rpm -qa | grep ssh

   

  该系统中没有安装SSH服务

2、安装SSH服务

  # yum install openssh-server

     

 安装成功

 3、启动SSH服务

  1)、修改配置文件

  # vi /etc/ssh/sshd_config

  

 esc+:wq 保存退出

  2)、启动服务

  # /bin/systemctl start sshd.service  (该命令没有回显说明成功了)

  3)、在docker会提示错误:Failed to get D-Bus connection: Operation not permitted

报这个错的原因是dbus-daemon没能启动。systemctl并不是不能使用。将CMD或者entrypoint设置为/usr/sbin/init即可。docker容器会自动将dbus等服务启动起来。

  a)、退出docker

  b)、重新创建容器

    docker run -d -it --privileged aipeli/node:v1 /usr/sbin/init

    在创建容器时一定要把端口映射带!

    docker run -d -it -p 3000:3000 --privileged aipeli/node:v1 /usr/sbin/init

  c)、进入容器

    docker exec -it 91 /bin/bash

 4、查看Openssl-server版本号

  # sshd -v

5、生成公钥

  1)、进行 cd ~/.ssh,如果不存在,说明没有创建公钥

  2)、生成公钥、私钥

  # ssh-keygen -t rsa -C "xxx@163.com"

  3)、查看公钥

  # cat ~/.ssh/id_rsa.pub

  

6、将公钥拷贝到gitee里配置

  1)、先创建一个仓库

  2)、在这个仓库里增加公钥

  

7、在docker可centos服务器上时行测试

  # ssh -T git@gitee.com

  1)、在docker里黙认没有ssh客户端工具

  # yum install openssh-clients

  2)、继续进行测试(3次回车)

  

   3)、测试成功

   4)、在docker中创建存放代码的目录,如:/www

   5)、在www目录中git clone 仓库,一定要用ssh协议,如果仓库为私有时需要输入用户名密码

  # git clone git@gitee.com:aipeli/webhook.git

  6)、查看远程仓库连接,进入/www/webhook目录(/www目录应该从宿主机上挂载,数据与容器分离更于自动化布署)

如果要挂载目录,创建容器的命令则改为:

  # docker run -d -it -p 3000:3000 -v /wwwroot:/www --privileged aipeli/node:v1 /usr/sbin/init

    /wwwroot:为宿主的目录

    /www:为docker容器的目录

  # git remote -v

    

 到这里,gitee仓库、SSH配置、docker的目录结构配置完成了!

8、在docker /opt目录中布署文件

  1)、创建目录  mkdir webhook

  # npm init

  # npm install  gitee-webhook-handler --save

  2)、修改package.json

  "start": "node index.js"

  3)、创建deploy.sh文件

 #! /bin/bash


git reset --hard origin/master
git clean -f
git pull origin master
npm install
npm run test
npm run start

  4)、创建index.js文件

 var http = require('http')

var createHandler = require('gitee-webhook-handler')
var handler = createHandler({ path: '/webhooks_push', secret: '123456' })# post 所需要用到的秘钥

function run_cmd(cmd, args, callback) {
  var spawn = require('child_process').spawn;
  var child = spawn(cmd, args);
  var resp = "";
  child.stdout.on('data', function(buffer) { resp += buffer.toString(); });
  child.stdout.on('end', function() { callback (resp) });
}
handler.on('error', function (err) {
  console.error('Error:', err.message)
})
handler.on('Push Hook', function (event) {  # 这个地方就是GitHub 和 Gitee 不一样的地方,需要注意
  console.log('Received a push event for %s to %s',
    event.payload.repository.name,
    event.payload.ref);
    run_cmd('sh', ['./deploy.sh'], function(text){ console.log(text) });# 需要执行的脚本位置
})
try {
  http.createServer(function (req, res) {
    handler(req, res, function (err) {
      res.statusCode = 404
      res.end('no such location')
    })
  }).listen(3000) # 服务监听的端口,可以自行修改
}catch(err){
  console.error('Error:', err.message)
}

  5)、运行node index.js

9、配置nginx端口转发

  1)、查看docker端口状态,docker ps

    

   2)、在/www/server/panel/vhost/nginx下创建webhook.aipeli.com.conf配置文件

server
{
  listen 80 default_server;
  server_name webhook.aipeli.com;
  location / {
  proxy_pass http://172.17.0.2:3000;
  }
}

  3)、在宝塔控制面板上打开3000端口(很重要!!!

查看端口是否开启

5、映射端口到docker

原文地址:https://www.cnblogs.com/aipeli/p/12337735.html