linux上开启ssh服务并远程登录

一. 什么是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 [email protected]
linux上开启ssh服务并远程登录
[email protected]’s password:输入服务器的密码,回车后出现上次登录的信息
linux上开启ssh服务并远程登录
ifconfig查看网卡信息,连接成功

linux上开启ssh服务并远程登录
退出登录
linux上开启ssh服务并远程登录

linux客户端连接linux服务器(秘钥对登录)

ssh连接的好处是他是非对称加密,比如说A要远程连接B,一般的A需要需要知道B的账户密码才能登录B,那样就显得不安全,因为密码随时有可能泄露。现在A生成了一个公钥和私钥,公钥相当于一把锁,私钥是一把钥匙,然后A把他的公钥信息导入到B的公钥库文件里,那么当A想要以B的某种身份(例如root)远程登录时,他就不需要知道B的密码,而是用自己创建的私钥去和B公钥库里的公钥配对,若配对成功则可以连接。而且这个私钥是非常安全的,靠倒推反向一般很难**。

客户端生成公钥秘钥
ssh-****** -t rsa (rsa算法)
linux上开启ssh服务并远程登录
注意生成的,ssh文件夹是隐藏的,ls -a 显示所有
linux上开启ssh服务并远程登录
公钥上传至服务器端(白色的是服务器端,黑色是客户端)
linux上开启ssh服务并远程登录
scp id_rsa.pub [email protected]:/root
linux上开启ssh服务并远程登录
linux上开启ssh服务并远程登录

在服务器端的root用户下是没有authorized_keys文件的
linux上开启ssh服务并远程登录
cat id_rsa.pub >> /root/.ssh/authorized_keys(你要以哪个用户的身份访问就放在哪个用户的家目录下)
linux上开启ssh服务并远程登录
linux上开启ssh服务并远程登录
为什么不需要密码登录,全靠这个文件 /root/.ssh/authorized_keys ,这个文件里装的是想要在这台服务器上登录的用户的公钥,具体的配置文件信息在/etc/ssh/sshd_config 里,所以应限制这个文件的权限,除自己外所有人不得读写。
linux上开启ssh服务并远程登录
chmod 600 /root/.ssh/authorized_keys
linux上开启ssh服务并远程登录
现在,重新连接,已经不需要输入密码了
linux上开启ssh服务并远程登录

利用windows远程工具连接linux服务器(秘钥对登录,无需输入密码)

一开始需要用户名密码登录
linux上开启ssh服务并远程登录
把linux客户端的里的id_rsa复制到windows桌面
linux上开启ssh服务并远程登录
当用xshell登录时,导入秘钥,就能登录192.168.2.4这个服务器
linux上开启ssh服务并远程登录
因为没有对秘钥设密码,所以不需要输入密码
linux上开启ssh服务并远程登录
无需输入密码,即可登录成功
linux上开启ssh服务并远程登录