遠端登入,增加使用者,提升許可權
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]
成功連結資料庫說明安裝配置正確