美文网首页
ssh服务为web生产服务器保驾护航

ssh服务为web生产服务器保驾护航

作者: martist | 来源:发表于2019-10-29 10:10 被阅读0次

    场景

    我们给自己的博客搭建一个站点,配置lnmp/lamp运行环境可以跑起来,差不多就完事了。但是当我们做的是一个中型或者大型项目,在它需要部署到生产服务器上线运营时,账户安全方面需要做些什么?

    ssh

    安装

    apt-get install openssh-server

    启动

    /etc/init.d/ssh start 

    使用

    ssh  martist@192.168.123.3

    //ssh远程连接服务器,需要输入用户密码

    应用

    主机名管理

    一个中型甚至大型的的项目,往往需要对多台服务器进行管理,如生产服务器,测试服务器,管理服务器等等。因此需要对每一台服务器的主机名进行管理,通过修改各个服务器的/etc/hostname文件修改本地系统名,重启可以看到。

    密钥ssh登录

    linux或Mac下生成密钥的命令是ssh-keygen -t rsa默认生成路径在家目录的.ssh目录下。id_rsa 文件保存的是本机的私钥,id_rsa.pub文件保存的是公钥。

    ifconfig命令查看服务器的IP地址,注意如果你是用的是阿里云ECS,此处查看到的是内网IP而非公网IP。

    在被登录的服务器的家目录下的.ssh目录(如果不存在就创建一个)创建一个authorized_keys 文件,并将生成的公钥文件的内容放到里面,就可以在本地使用密钥登陆这台服务器了。

    ssh  martist@192.168.123.3

    //此时不需要输入用户名密码

    如果我们关闭密码登陆,转而使用ssh密钥登录,更可以确保服务安全(注意:关闭密码登陆前,一定要确保能够正常使用ssh密钥登陆)。

    关闭密码登陆

    找到/etc/ssh/sshd_config 修改PasswordAuthentication 属性 yes。

    在第52行,yes改为no,禁用密码登陆(慎用)。

    详细实战分析

    线上:阿里云ECS云服务器 Ubuntu14.04lts

    Manager服务器生成ssh密钥

    ssh-keygen -t rsa  //一路回车

    生成的密钥保存在家目录下,进入.ssh目录下,

    ls//查看文件

    id_rsa id_rsa.pub know_hosts

    Manager服务器上在 /etc/hosts 文件里加上重定向的名字,如测试服务器,DB服务器和Manager服务器分别起一个重定向名字便于管理多台web服务器。

    修改本地定向网络ip(阿里云的内网ip)的文件

    vi /etc/hosts

    //写入 10.162.48.184 FWEB1

    //每次在终端输入‘FWEB1’,就代表‘10.162.48.184’。

    在mannager服务器上,试一下ssh登录web1服务器

    ssh root@FWEB1 

    退出

    exit

    在mannager服务器上,试一下文件上传web1服务器

    scp  ./id_rsa.pub root@FWEB1:/root

    现在还是需要输入密码,不过等一会把密钥加到web服务器上,再从manager登录web服务器,就不需要输入密码了。

    在web1服务器,家目录下创建.ssh目录

    ssh root@FWEB1 // 输入密码

    mkdir ~/.ssh

    在web1服务器,把id_rsa.pub传递到.ssh/目录下

    cat id_rsa.pub >> .ssh/id_rsa.pub

    此时,再从id_rsa.pub设置到web服务器(FWEB1)本地.

    文件改名

    mv id_rsa.pub authorized_keys

    给执行权限

    chmod 600 ./authorized_keys

    退出ssh远程登录

    exit

    此时回到manager服务器

    ssh  root@FWEB1

    //此时密码不用输就可以进入FWEB1

    随便上传个文件,试试

    scp know_hosts root@FWEB1:/tmp/

    此后,在manager服务器向web服务器,scp传送东西,不需要再输入密码了。

    原理:manager服务器私钥自己留着,把公钥给所有的web,DB,备份服务器,就可以便捷管理了。

    关闭web服务器的密码登陆

    找到/etc/ssh/sshd_config 修改PasswordAuthentication 属性 yes。在第52行,yes改为no,禁用密码登陆。

    修改sshd_config文件中ssh端口,ssh端口默认为 22. 把端口号改为1000以上的数值。

    默认:Port:22

    改为:Port 1678

    :wq //退出vi编辑器。

    reboot //重启生效

    ssh登录目的服务器命令

    root@FWEB1

    有点麻烦?可以创建自己的别名

    vi ~/.bash_profile

    //写入  alias fewb1='ssh root@FWEB1 -p 1678'

    //(-p 为端口号)

    好,:wq 保存退出。

    使他生效

    source .bash_profile

    查看别名

    alias

    在manager服务器下,把某个文件夹下全部文件推送到web服务器。

    scp -p 1678 ./* root@FWEB1:/tmp/ ~~~~

    //(需要被传送文件的web服务器有这个文件夹)

    把服务器其上的东西上传上去,是这样写, 把web服务器的东西下载到本地,只要把这俩目录倒过来,就可以了。

    技巧:

    cd ~

    mkdir sh

    vi pushcode.sh

    //在这里写shell脚本

    shell脚本的写法,开头‘#!’,后面是 shell可执行命令的位置。

    #!/bin/sh

    scp -p 1678 ./var/www.machuang.name/* root@FWEB1:/var/www/machuang.name

    好!:wq 保存推出。

    给执行权限

    chmod 755 /root/sh/pushcode.sh

    Ls查看下

    ls /root/sh

    此时看到pushcode.sh变成绿色,就对了。以后敲入这段命令,就可以完成上传代码的功能了。

    /root/sh/pushcode.sh

    就可以执行脚本内的命令了,此时再加一个别名。

    cd ~

    vi .bash_profile

    //写入  alias pushcode='/root/sh/pushcode.sh'

    //:wq 保存退出

    好,使它生效,否则要重启才能生效。

    source .bash_profile

    上传代码:

    pushcode

    这样一个具备业务逻辑的ssh服务使用就展现在你面前了,单一的使用一个工具并不显得立体,多种linux软件和命令有机结合在一起才能迸发出更大的能量。

    欢迎star

    我写的一本电子书,总结开发经验,完善知识体系,欢迎各位大佬订阅收藏。

    https://www.kancloud.cn/martist/ma_zhao_liu

    相关文章

      网友评论

          本文标题:ssh服务为web生产服务器保驾护航

          本文链接:https://www.haomeiwen.com/subject/lodwvctx.html