一. 什么是ssh服务
SSH服务端是一个守护讲程 (daemon).他在后台运行并响应来自客户端的连接请求。 SSH服务端的讲程名为sshd,负责实时监听远程SSH客户端的远程连接请求,并进行处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接等。这个SSH服务就是我们前面基础系统优化中保留开机自启动的服务之。
ssh客户端包含ssh以及像scp(远程拷贝) slogin(远程登陆) sftp(安全FTP文件传输)等应用程序。
ssh的工作机制大致是本地的ssh客户端先发送一个连接请求到远程的ssh服务端,服务端检查连接的客户端发送的数据包和IP地址,如果确认合法,就会发送密钥给 SSH的客户端,此时,客户端本地再将密钥发回给服务端,自此连接建立。
二.实验
实验环境:
现在有两台虚拟机,ip为192.168.2.4的机器作为服务器,另一台ip为192.168.2.5的机器作为客户端。
windows远程管理工具xshell。
1.配置文件
服务器:/etc/ssh/sshd_config
客户端:/etc/ssh/ssh_config
每一个虚拟机上都有这样的文件,他们都可以作为客户端和服务器
2.linux客户端连接linux服务器(密码连接)
在客户端(192.168.2.5下输入):
ssh root@192.168.2.4
root@192.168.2.4’s password:输入服务器的密码,回车后出现上次登录的信息
ifconfig查看网卡信息,连接成功
退出登录
linux客户端连接linux服务器(秘钥对登录)
ssh连接的好处是他是非对称加密,比如说A要远程连接B,一般的A需要需要知道B的账户密码才能登录B,那样就显得不安全,因为密码随时有可能泄露。现在A生成了一个公钥和私钥,公钥相当于一把锁,私钥是一把钥匙,然后A把他的公钥信息导入到B的公钥库文件里,那么当A想要以B的某种身份(例如root)远程登录时,他就不需要知道B的密码,而是用自己创建的私钥去和B公钥库里的公钥配对,若配对成功则可以连接。而且这个私钥是非常安全的,靠倒推反向一般很难破解。
客户端生成公钥秘钥
ssh-keygen -t rsa (rsa算法)
注意生成的,ssh文件夹是隐藏的,ls -a 显示所有
公钥上传至服务器端(白色的是服务器端,黑色是客户端)
scp id_rsa.pub root@192.168.2.4:/root
在服务器端的root用户下是没有authorized_keys文件的
cat id_rsa.pub >> /root/.ssh/authorized_keys(你要以哪个用户的身份访问就放在哪个用户的家目录下)
为什么不需要密码登录,全靠这个文件 /root/.ssh/authorized_keys ,这个文件里装的是想要在这台服务器上登录的用户的公钥,具体的配置文件信息在/etc/ssh/sshd_config 里,所以应限制这个文件的权限,除自己外所有人不得读写。
chmod 600 /root/.ssh/authorized_keys
现在,重新连接,已经不需要输入密码了
利用windows远程工具连接linux服务器(秘钥对登录,无需输入密码)
一开始需要用户名密码登录
把linux客户端的里的id_rsa复制到windows桌面
当用xshell登录时,导入秘钥,就能登录192.168.2.4这个服务器
因为没有对秘钥设密码,所以不需要输入密码
无需输入密码,即可登录成功