很久没有迁移过服务器了,对这些实在谈不上用心,所以这次还是简单的折腾了一些时间。
这里以ubuntu为例,参考了一些文章做一下流程化的记录。
用putty
连接服务器:
1.创建新用户
adduser example_user //添加新用户
adduser example_user sudo //新用户继承sudo权限
2.生成证书
使用 puttygen
或者git bash
生成key,
puttygen
生成就不多说了,点点就行了,git bash
输入命令
ssh-keygen //再输入密码就大可以生成了
不过用git bash
生成的私钥还需要用puttygen
转换一下才可以供后面的putty
登录使用
3.上传证书
exit
退出服务器,用example_user
角色登录服务器。
切到自己的example_user
根目录下,
mkdir .ssh
使用 Winscp 将刚才生成的证书公钥上传到.ssh文件夹,
然后:
sudo chmod 700 -R ~/.ssh && chmod 600 ~/.ssh/authorized_keys
设一下权限。
到/etc/ssh/sshd_config
修改一下配置,允许证书登录:
这里使用vi打开文本编辑:
sudo vi /etc/ssh/sshd_config
修改配置文件
# Authentication:
...
PermitRootLogin no //不允许root账号登录
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no //禁用密码登录,不过建议在证书登录未设置好之前先不要关了,不然没救了。
重启ssh服务
sudo systemctl restart sshd //(CentOS 7, Debian 8, Fedora, Ubuntu 15.10+)
sudo service ssh restart //(CentOS 6, Debian 7, Ubuntu 14.04)
重新登录就可以用证书了。
4.证书登录其它措施
使用putty配合证书登录,我们发现默认端口是22,这样我们可以修改一下端口,免得服务器上那扰人的尝试日志。
sudo vi /etc/ssh/sshd_config //依然是刚才的配置文件
Port 2345 //可以把22改成其它端口,例如2345等等不限
这里要注意,对机器防火墙做个简单的设置,万一防火墙没开2345
端口呢,那岂不是完蛋了。
更新一下防火墙规则:Iptables ,FirewallD ,UFW 或者其它防火墙,看看自己喜欢用什么就装什么。
例如 Iptables 可以编辑一下规则,自己查询一下命名 -h:
file:/tmp/v4
*filter
# Allow all loopback (lo0) traffic and reject traffic
# to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
# Allow ping.
-A INPUT -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT
# Allow SSH connections.
-A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
# Allow HTTP and HTTPS connections from anywhere
# (the normal ports for web servers).
-A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
# Allow inbound traffic from established connections.
# This includes ICMP error returns.
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Log what was incoming but denied (optional but useful).
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables_INPUT_denied: " --log-level 7
# Reject all other inbound.
-A INPUT -j REJECT
# Log any traffic that was sent to you
# for forwarding (optional but useful).
-A FORWARD -m limit --limit 5/min -j LOG --log-prefix "iptables_FORWARD_denied: " --log-level 7
# Reject all traffic forwarding.
-A FORWARD -j REJECT
COMMIT
FirewallD 从没用过,就不做叙述了。
UFW命令没多少:
sudo ufw delete allow 2345 //删除2345端口
sudo ufw allow 2345 //允许2345端口
sudo ufw limit 2345 //限制2345端口,不知道有什么用,好像多次错了会被拉黑
sudo ufw status //查看当前规则
sudo ufw enable //重启规则
sudo ufw disable //禁用规则
设置好之后,别忘了重启ssh服务。
这样上述如果设置顺利,就可以下次直接用证书从2345端口登录了。
当然,你可以自己探索一下更复杂的设置,例如,3次登录错误ip封禁这种变态措施…
5.重定向ip
如果你在主机下挂了一些网站,你就会发现用ip+端口也能访问这些站点,我们可以给网站定个规则做一个跳转。
/var/www/html/
文件夹下,可以在里面建个.htaccess
文件定一下规则:
添加如下代码
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^xx\.xx\.xx\.xx$
RewriteRule ^(.*)$ http://xx.domain.com/$1 [L,R=301]
</IfModule>
这样,从ip访问站点就会301重定向到domain,免得影响爬虫的SEO,不过对于现在的爬虫,这些似乎是小事。
6.参考文摘
工具下载:
这里有一些非常棒的文章可以参考: