FTP、Telnet 在网络上经过明文传输口令和数据,这是很是不安全的,很容易受到其余别有用心的人的利用,好比截获你的口令,而后冒充你的数据。ssh经过对传输数据加密实现安全登陆,并且ssh对传输数据进行加密,减少了传输时延。虽然ssh有必定的安全措施保护数据传输过程免受干扰,但若是登陆的机器自己处于危险的环境中,也难免要受收到一些干扰,所以要对处于危险环境的IP作一些限制,也就是黑名单和白名单linux
环境:两台centos7服务器。192.168.92.133和192.168.92.137vim
目的:实现SSH登陆centos
centos7默认安装了SSH,查看是否有SSH服务安全
rpm -qa|grep ssh
若是没有安装则安装一下服务器
yum -y install openssh*
注意:若是操做过程当中出现了问题,能够直接卸载,而后从新安装网络
yum remover -y openssh*
要确保登陆与被登录的两台机器都开启了SSH服务ssh
首先查看SSH状态tcp
systemctl status sshd.service
若是没有启动则启动SSH服务加密
systemctl start sshd.service
设置开机自启centos7
systemctl enable sshd.service
1.不指定用户,使用默认的root帐户登陆
ssh 192.168.92.137
2.登陆时指定用户
ssh –l root 192.168.92.137 或者 ssh root@192.168.92.137
3.SSH默认使用22端口登陆,若是被登录机器更改了端口号,则须要使用指定的端口登陆
ssh –p 12580 192.168.92.137 ssh –l root –p 12580 192.168.92.137 ssh –p 12580 root@192.168.92.137
第一次登录时会出现以下状况,会问你是否继续此链接,输入yes,而后提示你输入对方机器对应帐号的密码,经过查看ip,发现已经登陆上去了
须要退出登陆的话,输入exit,能够查看IP地址验证是否退出
每次登陆都须要输入密码挺麻烦的,若是有一种既安全又不用输密码的方式就方便许多了。这里就须要使用到公钥和私钥的知识了。
简单介绍一下。说到公钥和私钥,就要想到锁和钥匙的关系,公钥至关于锁,锁在大门上,任何人均可以看见。私钥至关于钥匙,只有有钥匙的人才能打开锁。锁和钥匙至关于验证身份的信物,只有用钥匙打开锁,我会认为是本身人,让你进来喝口茶,坐一坐。是否是整得还挺浪漫。
假如锁锁住的是宝物,而且还有人守护宝物,等待有缘人的到来。固然,守护者会去验证你的身份,验证身份的惟一标准就是是否能打开锁。当年藏宝的人把锁留下,确定还有钥匙去开锁。原本只有一把钥匙,但为了怕丢了又配了一把,因此他本人有钥匙能够随时来看看,而另外一把钥匙在他流浪江湖的时候给了一位有缘人,所以这位有缘人也能够经过验证打开锁,进而验证身份获得宝物。
说明
两台服务器:192.168.92.133和192.168.92.137
系统:centos7
目的:133服务器免密登陆到137服务器root用户
在133服务器上,生成公钥和秘钥
ssh-keygen
首先提示你生成秘钥的路径,若是不输入路径则默认生成在当前用户家目录下的.ssh目录中,当前帐户为root,因此生成的秘钥默认放在/root/.ssh/id_rsa
若是以前对应文件已经存在同名秘钥文件,则会提示你是否覆盖,若是该秘钥已用于链接其余服务器,则不要覆盖。如下为不存在同名文件,继续提示你为该秘钥设置密码,随后确认密码。设置密码后,每次使用秘钥都要输入密码。
这里咱们没有输入密码,直接两个回车
生成以后查看.ssh隐藏文件,id_rsa为私钥文件,id_rsa.pub为公钥文件
由于咱们要链接137服务器,所以要把公钥交给137服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.92.137
其中会提示你输入137服务器的密码,日后不会再让你输入
如今,就能够经过SSH免密登陆到137服务器了
ssh root@192.168.92.137
咱们能够经过查看.ssh目录下的known_hosts文件查看已知的主机
cat /root/.ssh/know_hosts
因为root用户具备超级权限,随意的使用root权限可能会带来一些隐患,所以咱们须要禁止root用户登陆,只开放普通用户登陆,当须要root权限时,再切换到root用户
在137服务器中修改sshd_config文件
vim /etc/ssh/sshd_config
找到PermitRootlogin yes,去掉#,把yes改成no
重启SSH服务
systemctl restart sshd.service
从133服务器登陆到137服务器的root帐户,能够看到已被拒绝登陆
登陆普通用户tc,可以正常登陆
为了安全考虑,咱们还能够修改默认的端口号,减少被黑客攻击成功的风险
找到#Port 22,去掉注释,修改为一个五位的端口:Port 12333
重启SSH服务
systemctl restart sshd.service
防火墙放行12233端口
firewall-cmd --permanent --add-port=12233/tcp
重启防火墙
firewall-cmd --reload
查看端口放行状况
firewall-cmd -–list-port
能够看到已经可以经过修改后的端口登陆了
SSH经过设置黑名单或白名单作某些限制,好比禁止经过某帐号登陆,或者禁止从某ip登陆
1.限制或容许经过某帐号登陆
在137服务器/etc/ssh/sshd_config里添加
DenyUsers tc
能够看到如今没法经过tc用户登陆到137服务器,而root用户能够正常登陆
若是为AllowUsers tc,则为容许tc用户登陆
AllowUsers tc
每次登陆还须要输入用户名和ip,感受比较麻烦,能够经过配置SSH快捷登陆直接登陆到linux服务器。
编辑当前用户家目录下的.ssh/config文件,若是没有则建立一个
touch config
vim config
添加以下信息
Host alias #自定义别名
HostName hostname #替换为你的ssh服务器ip
Port port #ssh服务器端口,默认22
User user #ssh服务器用户名
IdentityFile ~/.ssh/id_rsa #生成的公钥文件对应的私钥文件
保存并退出
能够看到直接经过ssh aliyun登陆到135服务器了
2.容许经过某个ip登陆
vim /etc/hosts.allow
能够编辑以下信息
sshd:192.168.92.133:allow #容许 192.168.0.1 这个 IP 地址 ssh 登陆 sshd:192.168.92.0/24:allow #容许 192.168.92.0/24 这段 IP 地址的用户登陆 sshd:ALL # 容许所有的 ip经过ssh 登陆
也能够限制从某ip登陆
vim /etc/hosts.deny
能够编辑以下信息
sshd:192.168.92.135:deny #拒绝135这个IP地址经过ssh登陆 sshd:all:deny #拒绝所欲sshd远程链接
这里咱们对host.deny设置,禁止经过135服务器登陆到本机
重启服务
systemctl restart sshd
发现已经不能经过135服务器登陆到本机
那么,若是hosts.allow设置为容许133服务器登陆,同时,hosts.deny为拒绝133服务器登陆的时候,因为hosts.allow文件的优先级高,所以此时能够经过135服务器登陆到本机。