sshd服务,是服务端提供给客户端,用于客户端通过网络远程登陆服务端主机的软件。 而客户端,通过ssh命令实现远程登陆服务端主机的目的。 sshd==secure(s) shell(sh) daemon(d)
连接方式: ssh username@ip 文本模式的连接(连接成功后无法开启图形化界,只能调用远程主机的文字命令) ssh —X username@ip 可以在链接成功后调用远程主机的图形化界面工具(如虚拟机,摄像头等等)
注意: 必须是在服务端的sshd服务开启的条件下,客户端才可以成功地使用ssh命令远程登陆服务端主机。
下图为例: 图一中,我使用ssh username@ip 命令在client客户端远程登陆服务端主机srver,虽然操作成功,但是,拒绝了我的gedit命令,因为需要显示图形化界面窗口。 而在图二中,我使用ssh —X username@ip 命令在client客户端远程登陆服务端主机srver,操作成功,并且完成了gedit命令。 图三四中,我先关闭了服务端的sshd服务,再在客户端使用ssh命令远程登陆,当然,链接的请求被拒绝了。
系统默认的sshd服务的认证方式是密码认证加密 而为了优化sshd的安全我们可以使用另一种认证方式: 使用key验证,先产生公钥 ,私钥,使用公钥给服务器端加密;将私钥发给客户端来使用,从而实现使指定的客户端才能远程登陆 1.生成认证的key(密钥) 使用ssh-keygen生成key(三次空格) 其中,id_rsa 为私钥(钥匙),id_rsa.pub为公钥(锁)。 2.加密sshd服务 根据上一步所生成的公钥id_rsa.pub,使用命令ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.206 加密服务端的sshd服务。 3.分发钥匙 将私钥发送给要远程登陆的客户端 使用命令: scp /root/.ssh/id_rsa root@172.25.254.106:/root/.ssh/ 4.测试是否设置成功 在客户端使用ssh命令远程登陆服务端,察看是否能够实现免密登陆 注意: 如果想要仅有此方式认证的话,需要设置配置文件:vim /etc/ssh/sshd_config 将其中第78行的PasswordAuthentication更改为no;即不启用原来的密码认证的方式,保存后退出。 下图为例: 图一中,使用ssh-keygen命令生成密钥,并检查其生成。 图二中,使用第一步生成的公钥加密服务端。 图三中,检查第二步之后的/root/.ssh/目录下文件。 图四中,将第一步生成的私钥发送给客户端。 图五中,查看客户端/root/.ssh目录下的文件。 图六中,测试。
通过设置配置文件:vim /etc/ssh/sshd_config 设置 PermitRootLogin yes/no 开启或关闭以root用户身份远程登陆 设置 Allowusers user1 只允许以user1用户身份远程登陆 设置 Denyusers user1 不允许以user1用户身份远程登陆
下图为例: 图一中,我在服务器端新建立了两个用户user1,user2,并为其更改了初始密码 图二中,我在服务器端编辑了/etc/ssh/sshd_config,设置 PermitRootLogin yes 且 Allowusers user1。保存并退出后,重启sshd服务。 图三四中,我在客户端新分别尝试远程登陆服务端的root,user1,user2等用户,但是只有user1可以成功登陆,而即便允许root用户登录,但是在Allowusers中没有root,也无法登录 (Denyusers user1 同样,不再插图)
/etc/motd 文件内容就是登陆后显示的信息 在服务端使用vim命令编辑该文件,以便于在远程登陆成功后,向登陆客户提供相应的客户端主机身份的有关信息。 下图为例:
(1) w 查看正在使用当前系统的用户 w -i 显示使用者的来源的ip地址 w -f 显示使用者的来源 将存储于/var/run/utmp中的数据显示出来(数据文件,二进制,不能直接以文本方式打开) (2) last 显示登陆过主机又退出的用户信息 将存储于/var/log/wtmp中的数据显示出来 (3) lastb 显示试图登陆主机,但是没有成功的用户 将存储于/var/log/btmp中的数据显示出来
下图为例: