一、ssh和sshd
在同一个局域网中的两台主机,如果他们分别开启了ssh和sshd功能,那么开启ssh功能的客户端(即其中一台主机)就可以通过ssh功能与另一台开启sshd功能的服器(另一台主机)建立连接,从而实现远程登陆,当然你需要知道服务器端的登陆密码。
二、客户端连接方式
1.文本界面登陆:
在客户端打开一个终端,输入命令:ssh root@远程主机ip 。你会进入下面的界面:
根据提示,第一行输入yes,然后输入登陆密码即可登陆服务器。如下图:
2.图形界面登陆:
在客户端打开一个终端,输入命令:ssh root@远程主机ip -X 。如图
图中我用vim新建了一个hello文件,简单编辑后先不退出,在服务器端查看系统进程,如图
你会发现虽然服务器端什么都没做但是进程中却有一个vim,这就是远程图形登陆的方法。在服务器进行root目录查看,可以看到下图:
3.不登陆远程服务器,直接执行命令:ssh root@远程主机ip commamd 。(注:command指你要执行的命令)
在上一步中,我新建了一个hello文件,现在我执行命令:ssh [email protected] rm -f hello,如图:
执行后在服务器端查看hello是否存在,如下图:
三、sshkey加密
当然你肯定不希望别人随意登陆你的主机,因此你可以加密你的主机,这样即使别人知道你的登陆密码也无法远程登陆你的主机。这就要用到sshkey功能了。
1.设定远程登陆密码
在服务器端打开一个终端,输入命令:ssh-keygen 。你会进入下面的界面:
第二行直接回车,然后时依次输入两次密码。
在上图中你可以看到/root/.ssh文件中有这样的两个文件:id_rsa和id_rsa.pub。id_rsa文件相当于私钥也就是钥匙,id_rsa.pub文件相当于公钥,也就是锁。当然你需要将钥匙给客户端,客户端才能登陆服务器。
2.添加key认证方式
在服务器端打开一个终端,输入命令:ssh-copy-id -i /root/.ssh/id_rsa.pub root@客户端ip。命令由五部分组成:
(1)ssh-copy-id ##添加key认证方式的工具
(2)-i ##指定加密key文件
(3)/root/.ssh/id_rsa.pub ##加密key
(4)root ##加密用户为root
(5)被加密主机ip
输入上面命令会出现下面的界面:
输入yes,然后根据提示输入客户端密码,完成后如下图:
3.分发钥匙给client主机
在服务器端打开一个终端,输入命令:scp /root/.ssh/id_rsa root@客户端ip:/root/.ssh/ 。如图:
这样就可以将钥匙发到客户端,客户端就可以用第一步设定的密码进行远程登陆。
4.测试
在客户端执行命令:ssh root@服务器ip 。客户端通过id_rsa直接连接不需要输入用户密码。
四、提升openssh的安全级别
1.打开openssh-server的配置文件/etc/ssh/sshd_config,在文件中主要更改的有下面四条:
(1)PasswordAuthentication yes|no ##是否开启用户密码认证,yes为支持no为关闭
(2)PermitRootLogin yes|no ##是否允许超级用户登陆
(3)AllowUsers student westos ##用户白名单,只有在名单中出现的用户可以使用sshd建立shell
(4)DenyUsers westos ##用户黑名单
通过更改上面的四项内容,你可以控制客户机的登陆。
2.控制ssh客户端访问
(1)在服务器打开文件vim /etc/hosts.deny,设定禁止登陆的用户ip,或全部禁止。在文件中输入sshd:ALL拒绝所有人链接sshd服务,输入sshd:用户ip(注:可添加多个用户,用逗号隔开),禁止设定用户登陆。
(2)在服务器打开文件vim /etc/hosts.allow,设置允许登陆的用户ip。在文件中输入sshd:用户ip(注:可添加多个用户,用逗号隔开),允许设定的用户登陆。输入命令sshd:ALL EXCEPT 用户ip只不允许命令中设定的用户链接sshd。
3.ssh登陆提示修改该
打开文件vim /etc/motd,在文件中输入你要显示的登陆后字符,如下图:
保存并退出,在客户端登陆会出现下面的界面: