OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程中的数据,并由此来代替原来的类似服务。当主机中开启openssh服务,那么就对外开放了远程连接的接口。openssh服务的服务端为sshd,客户端为:ssh
*****************************************************************************************************************************************************************
1. 在客户端连接sshd的方式
命令格式:ssh 服务端用户名@服务端ip地址
以连接172.25.254.145这台机器为例,服务端用户名为root。命令执行后需要输入密码。密码正确则成功连接。连接之后就相当于远程操控这台机器了。
注意:以上连接方式是不能打开远程主机的图形功能的如果需要打开远程主机图形功能需要输入 -X":ssh -X root@172.25.254.145
2. 给ssh服务添加KEY认证:指定机器免密连接
2.1 生成锁和钥匙
[root@localhost ~]# ssh-keygen 生成密钥的命令,执行命令之后,默认文件存储路径为/root/.ssh/id_rsa。设定密码之后,密码会变成加密图形。
2.2加密ssh用户的认证
私钥配置是我把我的私钥发给你,让你来免密连接我。
公钥配置是我把我的公钥发给你,我来免密连接你。
私钥配置的方式:
私钥配置是指,将私钥文件id_rsa发送到客户端的/root/.ssh/目录下。这种配置方式的结果是,如果想要实现对两个服务端的免密连接,当两个服务器的私钥文件发到同一个客户端,文件会覆盖,第一个发过来的私钥失效。第一台服务端将无法免密连接,修改秘钥文件名也不行,私钥配置适合一个服务端的场景。
在服务端(即生成密码段图形的一端)执行命令:ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.145 ##将锁给服务端
ssh-copy-id ##加密命令
-i ##指定密钥
/root/.ssh/id_rsa.pub ##密钥文件
root ##加密用户
172.25.254.145 ##加密主机ip
解密文件传输到客户端(授权免密连接的一端): scp /root/.ssh/id_rsa root@172.25.254.245:/root/.ssh/
之后在客户端245的/root/.ssh目录中可以查看到id_rsa这个文件,再次连接服务端时不需要密码,连接服务端后可在服务端桌面建立文件file2表示连接成功:
想要客户端在有密钥的情况下仍无法连接服务端,可删除服务端的authorized_keys文件:
rm -fr /root/.ssh/authorized_keys ##当此文件被删除,客户端解密文件失效,但仍可以通过输入服务端的密码进行连接,当然不知道密码也是无法连接的。
authorized_keys文件的恢复:
cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys ##从新生成锁文件,解密文件功能恢复
想要客户端在有密钥和服务端密码的情况下仍无法连接服务端,可以编辑服务端/etc/ssh/sshd_config文件,使客户端在连接时不进行输入密码的提示。将78行的yes改为no
设置完成后保存退出,需要使用指令systemctl restart sshd重启服务。再次连接是会显示请求被拒绝,即客户端连接失败。
公钥配置方式:
使用公钥文件 id_rsa.pub 。
比如172.25.254.145要免密连接172.25.254.146和172.25.254.147,可以直接将公钥加给172.25.254.146和172.25.254.147:
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.146
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.147
2.3 sshd的安全配置
禁止原始认证方式
PasswordAuthentication no|yes ##开启或关闭ssh的默认认证方式
PermitRootLogin no|yes ##开启或关闭root用户的登陆权限
AllowUsers westos ##用户白名单,当前设定是只允许westos登陆
DenyUsers linux ##用户黑名单,当前设定是只不允许linux登陆
同样是编辑文件/etc/ssh/sshd_config,在空白行写入AllowUsers westos,DenyUsers linux,表示westos用户可以接入而 linux用户不可以。
编辑文件之后保存退出,使用指令systemctl restart sshd重启服务,切换到用户连接时,白名单连接成功而黑名单连接失败
2.4 linux中服务的管理(适用于红帽7版本,6版本为service 服务名 动作,或/etc/init.d/服务名 动作)
systemctl 动作 服务名
systemctl start sshd #开启sshd服务
systemctl stop sshd #停止服务
systemctl status sshd #查看服务状态
systemctl restart sshd #重启服务
systemctl reload sshd #让服务从新加载配置
systemctl enable sshd #设定服务开启启动
systemctl disabled sshd #设定服务开机不启动