远程登录,增加用户,提升权限
linux允许多人、同时、在不同的地点,操作同一台服务器。
可以设置多个用户,分组,可以修改设置每个用户的权限。
通过ssh协议进行远程链接,登录云主机。
当拥有了一台云主机后:
- 先用root账户进行ssh远程登录
ssh -p [port] username@ip_address
- 用命令添加其他用户,并将用户拉入更高权限的组。
useradd manager -m
增加名为manager的用户,-m参数会同时在/home目录下建立manager目录passwd manager
设置manager用户的密码gpasswd -a manager sudo
将manager添加到sudo组,-a参数表示添加用户到组 - 在sudoers文件中设置新增用户的权限,打开sudoers文件
vi /etc/sudoers
- 在root ALL=(ALL:ALL) ALL的下面一行,添加一行
manager ALL=(ALL:ALL) ALL
我在实作中执行完第3步后,不执行第4步,该用户也是具有管理员权限的。
要使用ssh进行远程免密链接,需要在我们的本地机上生成ssh的公钥和私钥。
这两把钥匙文件,其中公钥文件将交给远程服务器保存。
每次本地机进行ssh链接远程主机时,本地机会先用自己的私钥进行加密,而远程主机会用保存的本地机的公钥进行解密,确认对方的身份之后就可允许对方登录。
这么做就实现了免密登录。如果远程主机没有持有对方的公钥,那么本地机就需要输入自己的用户密码登录。
安装git
主要使用git将本地机代码push到服务器上。或者在服务器上从github clone代码。
- 首先更新apt-get的源,顺便升级已安装的软件,接着安装git包。
apt-get update
apt-get upgrade
apt-get install git
- 给manager用户在服务器上生成一个ssh公钥和私钥
ssh-keygen
该命令会在用户根目录下创建.ssh目录,并生成id_rsa和id_rsa.pub文件 - 在本地机用户目录下的.ssh文件夹内,启动命令行工具,将本地机的公钥保存到服务器上
ssh-copy-id manager@id_address -p [port]
这行命令会在远端manager目录下生成一个authorized_keys文件。cat .ssh/authorized_keys
在manager的用户根目录中(/home/manager)用cat命令打印出该文件内容 - 将服务器的ssh公钥保存到github上
尝试使用git
这里以push一个本地hexo静态站为例:
- 创建远端仓库
cd /var/repo
git init --bare hexo-blog.git
mkdir /var/www/hexo
vim /var/repo/hexo_static.git/hooks/post-receive
创建一个hooks钩子文件,在文件中添加如下两行#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/hexo_static.git checkout -f
chmod +x /var/repo/hexo_static.git/hooks/post-receive
保存后使文件具有可执行权限 -
在hexo中设置仓库地址
在配置文件中修改如下信息deploy: type: git repo: ssh://[uername]@[ip_address]:[port]/var/repo/hexo_static.git branch: master
- 运行hexo d,将hexo静态站推到远端仓库
hexo建站可参考网络文章,或我的这篇
设置防火墙
主要设置iptables的配置项。
这里罗列一个简单的入门配置。
该配置能达到以下防护:
以下具体的端口号(如3989,8080,19898)可根据个人业务修改
- 只允许80端口和8080端口的http请求
- 只允许3989 19898端口的ssh访问
- 屏蔽对80端口在60s内访问超过150次的敏感ip
*filter
# allow all connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# allow out traffic
-A OUTPUT -j ACCEPT
# allow http https
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 8080 -j ACCEPT
# allow ssh port login
-A INPUT -p tcp -m state --state NEW --dport 3989 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 19898 -j ACCEPT
# ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# log denied calls
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7
# drop incommin sensitive connections
-A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
-A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 150 -j DROP
# reject all other inbound
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
开启iptables设置规则 iptables-restore < /etc/iptables.up.rules
设置nginx
- 安装nginx
sudo apt-get install nginx
-
设置nginx的配置文件
在/etc/nginx/conf.d下新建一个配置文件,命名为test-8080.conf的文件,填充类似如下内容。将达到这些效果:能够将访问app.test.cn的域名转发到8080端口的应用去处理;对blog.test.cn的访问将用hexo的静态站呈现upstream test { server 127.0.0.1:8080; } server { listen 80; server_name app.test.cn; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forward-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; proxy_pass http://test; proxy_redirect off; } } server { listen 80; listen [::]:80 ipv6only=on; server_name blog.test.cn; root /var/www/hexo; index index.html index.htm; }
- 在dns解析中添加相应域名解析的a记录
- 重载nginx的设置
sudo nginx -s reload
这时我们的hexo静态站应该就可以通过blog.test.cn访问了。
设置mongodb
- 参阅官网的安装教程进行mongodb的安装
- 修改mongodb的默认端口
sudo vi /etc/mongod.conf
在该文件将port更改为你想更改的port - 去/etc/iptables.up.rules增加你设置的端口
- 重载iptables设定
iptables-restore < /etc/iptables.up.rules
如遇错误可尝试重启服务器,在进行重载 - 启动mongodb
sudo service mongod restart
- 打开mongo命令行工具
mongo --host 127.0.0.1:[port]
成功链接数据库说明安装配置正确
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。